matlab - 尝试将点添加到 plot3 时出错
问题描述
我正在尝试将信息动态添加到 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 属性,并且在未来的版本中会出错。
在奇怪的吸引器(第 4 行)中警告:不再支持 EraseMode 属性,并且在将来的版本中会出错。
在奇怪的吸引器(第 4 行)中使用 matlab.graphics.chart.primitive.Line/set 时出错 对象无效或已删除。
奇怪的吸引器(第 12 行)集合中的错误(p,'XData',y(1),'YData',y(2),'ZData',y(3))
我了解我正在使用过时的语法来动态更新不再支持的绘图。我如何使它工作?
请注意,我不想plot3
在循环内部调用,因为它会使绘图变慢并消耗大量内存。我希望调用 plot3 一次,然后在循环内的现有绘图中添加新点。可以在新版本中完成吗?
Matlab版本:R2018a
解决方案
在您上面的评论中,当您说“这不起作用”时,您是什么意思?根据给定的文档链接直接修改代码按预期工作:
A = [ -8/3 0 0; 0 -10 10; 0 28 -1 ];
y = [35 -10 -7]';
h = 0.01;
p = animatedline(y(1),y(2),y(3),'Marker','.','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;
addpoints(p,y(1),y(2),y(3))
drawnow
end
推荐阅读
- javascript - 在html表单中单击后消失的提交按钮
- pointers - []struct{} 和 []*struct{} 有什么区别?
- ios - 尝试检查是否加载了视图控制器,然后将其呈现在容器中(UISegmentedController)
- ruby-on-rails - Rails 5:上传图片后出现附件错误
- android - 如何仅将editText用于数字
- c# - 给 Argb 值一个整数值
- android - Android Studio 中缺少 Kotlin 临时文件输出
- angular - 在 webrtc 中没有触发 icecandidate 事件
- mysql - MYSQL 状态最大值
- powershell - 在 PowerShell 中,将复杂对象 (SmoServer) 传递给 ArgumentList 中的后台作业 - 卡在“未启动”中