在使用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(图