Я пытаюсь динамически добавлять информацию в 3D-график:
A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];
y = [35 -10 -7]';
h = 0.01;
p = plot3(y(1),y(2),y(3),'.','EraseMode','none','MarkerSize',2);
axis([0 50 -25 25 -25 25])
hold on
while 1
A(1,3) = y(2);
A(3,1) = -y(2);
ydot = A*y;
y = y + h*ydot;
set(p,'XData',y(1),'YData',y(2),'ZData',y(3))
drawnow
end
Я получаю следующие ошибки:
Предупреждение. Свойство EraseMode больше не поддерживается и будет вызывать ошибку в будущем выпуске.
В Strange_attractor (строка 4) Предупреждение. Свойство EraseMode больше не поддерживается, и в будущем выпуске возникнет ошибка.
В Strange_attractor (строка 4) Ошибка при использовании matlab.graphics.chart.primitive.Line/set Недействительный или удаленный объект.
Ошибка в наборе странно_аттрактора (строка 12) (p, 'XData', y (1), 'YData', y (2), 'ZData', y (3))
Я понимаю, что использую устаревший синтаксис для динамического обновления графика, который больше не поддерживается. Как заставить это работать?
Обратите внимание, что я не хочу вызывать plot3
внутри цикла, потому что это замедляет построение графика и потребляет много памяти. Я надеюсь вызвать plot3 один раз и просто добавить новые точки к существующему графику внутри цикла. Можно ли это сделать в новой версии?
Версия Matlab: R2018a
plot3
вне цикла наplot3(y(1),y(2),y(3),'.','MarkerSize',2);
и заменитьset(.....)
: на этоplot3(y(1),y(2),y(3),'.', 'MarkerSize',2);
? - person Sardar Usama   schedule 26.07.2018'EraseMode','none'
из вызоваplot3
, и все должно работать как раньше. В конце концов, это всего лишь предупреждение... Сообщение об ошибке появилось только после того, как вы закрыли окно, не так ли? - person Cris Luengo   schedule 26.07.2018