Tek bir plot
komutuyla birden fazla çizim nesnesi oluşturursanız, plot
tarafından döndürülen tanıtıcı aslında an array of plot objects'dur (her çizim için bir tane). Bu nedenle
plots = plot(rand(2));
size(plots)
1 2
, sen basitçe XData
başka [2x2] matrisi atayamazsınız.
set(plots, 'XData', rand(2))
Sen aşağıdaki sözdizimi yoluyla araziler yeni Xdata bir hücre dizisi geçebileceği. Bu, yeni değerlerinizin bir hücre dizisinde zaten varsa, gerçekten kullanışlıdır. Diğer seçenekler, her arsa nesnesini yeni değerlerle ayrı ayrı güncellemektir. Bunu hızlı bir şekilde yapabildiğimiz kadarıyla, hepsi bir kerede ayarlamamış bir performans isabeti değil, çünkü MATLAB boşta kalmayacak ya da açıkça drawnow
'u arayacaksınız. Gerçekten göstermiştir XDataSource
ve YDataSource
yöntemi kullanmak istiyorsanız
X = rand(2);
Y = rand(2);
for k = 1:numel(plots)
set(plots(k), 'XData', X(k,:), 'YData', Y(k,:))
end
% Force the rendering *after* you update all data
drawnow
, aslında bunu yapabilirsiniz, ancak her arsa nesne için benzersiz bir veri kaynağı belirtmek gerekir.
% Do this when you create the plots
for k = 1:numel(plots)
set(plots(k), 'XDataSource', sprintf('X(%d,:)', k), ...
'YDataSource', sprintf('Y(%d,:)', k))
end
% Now update the plot data
X = rand(2);
Y = rand(2);
refreshdata(plots)
ayarını denediniz 'x' bir' Nx2' matris olmak? –
"drawnow" işlevini kullanabilirsiniz. – obchardon
Cevap @Ander Biguri için teşekkürler. Aşağıdaki kodu denedim ama bir vektöre değil, bir 2D dizisine izin veriyor gibi görünüyor. 'x (:, 1) = (1:10); x (:, 2) = (1:10); y (:, 1) = 2 x (1, 1); y (:, 2) = 5 x (2, 2); h = arsa (x, y); % x, y yeni veri sağlar. set (d1, 'XData', x, 'YData', y); ==> kümesi kullanılarak hata oluştu. Değer bir sütun veya satır vektörü olmalıdır. ' – bienle