使用set函数提高MATLAB曲线和图像动态结果的更新速率

本文探讨了如何提高MATLAB中动态图像和曲线的更新速率。通过对比优化前后的代码示例,解释了使用set函数更新CData属性而非重复调用imshow的原因,涉及MATLAB图形系统的更新机制。同样,对于动态曲线,通过创建并更新line对象的XData和YData属性,可以显著提升更新速度。实测表明,优化后的代码能实现更高的帧率,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用MATLAB中通常需要动态显示图片或者曲线,而当图片数据量较大或者曲线点很多时,若不采用合适的方式调用MATLAB图形系统,将会导致MATLAB图形渲染速度变得比较慢,不能以、平滑或较高的帧率绘出我们想要的结果。

下面用图像和曲线动态结果更新的MATLAB代码优化前后的示例,来说明如何提高渲染速率。

1 优化图像的动态更新速率

以下分别是我们常用的图像动态显示代码以及优化后能够提升更新速度的代码。

   % 传统的多图动态显示
   n = 100;
   for frame = 1:n
   	im = imread(num2str(frame, '%04d.jpg'), 'jpg');
   	imshow(im);
   	drawnow limitrate
   end
 % 多图动态显示性能提升代码示例
 n = 100;
 temp = imshow(NaN); % NaN代表空值;这一行返回一个image对象
 for frame = 1:n
 	im = imread(num2str(frame, '%04d.jpg'), 'jpg');
 	set(temp, 'CData', im);
 	drawnow limitrate
 end

从上面可以看到,性能提升的关键在于使用set函数。那么,为什么第二种代码重复调用set比第一种代码重复调用imshow更有效呢?

这里就涉及到MATLAB图形系统的更新机制。以下内容,部分是我的猜测,其余参考自网络资料。

如果我们调用imshow来显示图像的话,会产生新的image object(图

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值