我目前使用Matlab的imshow在扩散滤波器过程的每次迭代中输出图像,即每秒多次。 有时在过滤期间我想仔细查看特定的图像部分。 但是,当使用(' Parent',句柄)名称 - 值对进行imshow时,放大率和位置会重置。
有没有办法更新基础图像,但放大倍数和位置完好无损?
答案 0 :(得分:1)
您可以将当前轴的cdata
更新为新的数据矩阵,这将保持所有其他设置不变。如果这是循环,您可能需要调用drawnow
。 E.g:
x=randn(100);
figure;imagesc(x);
现在缩放/平移/执行您想要的任何操作。
f=gca;
x=randn(100);
f.Children.CData = x;
Matlab推荐这种更新子数据的方法比破坏轴子Image
并重新创建每个帧(不记得源,它在其中一个帮助文件中)更有效。< / p>
编辑:记得这个语法不适用于旧版本的matlab(2015年左右)。在这种情况下,请使用get / set语法:
set(get(gca,'Children'),'CData',x);