[已解决] mesh放在循环之前,如何在循环中反复修改该mesh的ZData和XData?

[复制链接]
ssizz 发表于 2021-4-29 17:46:31
本帖最后由 ssizz 于 2021-4-29 17:48 编辑

之前我为了展现一个曲面的动态变化过程(这个曲面在不断地沿x轴方向扩大),而在while循环中反复调用mesh函数,结果自然是随着循环次数的增加,越来越慢。我使用的是Matlab 7.0
我在本论坛中搜索到了类似问题的答案如下,但我不知道该如何实现:
如果清空环境变量才能保证matlab的mesh函数执行够快 – MATLAB中文论坛 (ilovematlab.cn)
“ mesh不是仅仅“画”一个东西到屏幕上这么简单,它是在axes中添加了一个可以变化的三维实体。想让它动起来,你要做的不是往axes中添加mesh,而是改变已经存在的mesh.........在循环前使用mesh,循环中就是要始终修改ZData(根据需要,可能还要修改XData和YData)。用这种方法效率都最高 ”


如题,我在此请教:    mesh放在循环之前,绘出一个曲面,如何在循环中反复修改该mesh的ZData和XData以让这个曲面变化起来?



最佳答案


TouAkira 发表于 2021-4-29 18:55:02
① 画曲面需要多个矩阵,所以当不断更新矩阵或者矩阵规模变大时,就会占用内存等资源,卡是正常的
② Matlab 7.0太古老了,该更新就更新吧,老版本很多语法跟新版本都不一样的,有些方法未必适用
③ 写成 h = mesh( x, y, z ); 的形式,然后在循环里面用 h.ZData = ... 来更新。
回复此楼

2 条回复


TouAkira 发表于 2021-4-29 18:55:02
① 画曲面需要多个矩阵,所以当不断更新矩阵或者矩阵规模变大时,就会占用内存等资源,卡是正常的
② Matlab 7.0太古老了,该更新就更新吧,老版本很多语法跟新版本都不一样的,有些方法未必适用
③ 写成 h = mesh( x, y, z ); 的形式,然后在循环里面用 h.ZData = ... 来更新。
回复此楼

ssizz 发表于 2021-4-29 20:54:54
TouAkira 发表于 2021-4-29 18:55
① 画曲面需要多个矩阵,所以当不断更新矩阵或者矩阵规模变大时,就会占用内存等资源,卡是正常的
② Matla ...

我在matlab 7.0 的循环里用
set(hm,'XData',X,'YData',Y,'ZData',Z)
drawnow
实现了曲线更新
但感觉用时跟循环里mesh差不多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表