Matlab imshow 在旧位置和放大倍数下更新图像
Matlab imshow update image at old position and magnification
我目前使用 Matlab 的 imshow 在扩散过滤过程的每次迭代中输出图像,即每秒多次。
有时在过滤期间我想仔细查看特定的图像部分。
但是,当对 imshow 使用 ('Parent', handle) 名称-值对时,放大倍数和位置会重置。
有没有办法更新底层图像但保持放大和位置不变?
您可以将当前轴中的 cdata
更新为您的新数据矩阵,这将使所有其他设置保持不变。如果这是一个循环,您可能需要调用 drawnow
。例如:
x=randn(100);
figure;imagesc(x);
现在缩放/平移/做任何你想做的操作。
f=gca;
x=randn(100);
f.Children.CData = x;
Matlab 推荐这种更新子数据的方法,因为它比销毁轴子 Image
并重新创建每一帧更有效(不记得来源,它在一个帮助文件中) .
编辑:请记住,此语法不适用于旧版本的 matlab(2015 年之前左右)。在这种情况下,使用 get/set 语法:
set(get(gca,'Children'),'CData',x);
我目前使用 Matlab 的 imshow 在扩散过滤过程的每次迭代中输出图像,即每秒多次。 有时在过滤期间我想仔细查看特定的图像部分。 但是,当对 imshow 使用 ('Parent', handle) 名称-值对时,放大倍数和位置会重置。
有没有办法更新底层图像但保持放大和位置不变?
您可以将当前轴中的 cdata
更新为您的新数据矩阵,这将使所有其他设置保持不变。如果这是一个循环,您可能需要调用 drawnow
。例如:
x=randn(100);
figure;imagesc(x);
现在缩放/平移/做任何你想做的操作。
f=gca;
x=randn(100);
f.Children.CData = x;
Matlab 推荐这种更新子数据的方法,因为它比销毁轴子 Image
并重新创建每一帧更有效(不记得来源,它在一个帮助文件中) .
编辑:请记住,此语法不适用于旧版本的 matlab(2015 年之前左右)。在这种情况下,使用 get/set 语法:
set(get(gca,'Children'),'CData',x);