我想绘制一次,然后经常更新(非常)并在MATLAB中重新绘制(少)常常的图像。我的图像是一个更新和重绘的矢量。为了显示此图片,我使用I = imagesc(reshape(data, nVoxels))
绘制并I.CData(:) = data
进行更新。 (重绘是分开处理的。)这很好。
现在,为了使对应于xy坐标系(x水平,y垂直 - 非常标准),其中reshape(data, nVoxels)
的第一维是x,第二维是y,我需要绘制像这样:
I = imagesc(reshape(data, nVoxels)');
axis('xy');
但我现在如何快速更新图像数据呢?
到目前为止,我发现我需要做
I.CData = reshape(data, nVoxels)';
但我更喜欢像以前那样做一些事情,更新CData而无需重新分配,也无需转置数据。
这可能吗?我特别感兴趣的是在循环中经常更新;重绘是使用计时器独立处理的。
答案 0 :(得分:1)
当您创建图像以翻转它并旋转轴时,可以通过设置x和y限制来避免转置:
I = imagesc([nVoxels(2) 1], [1 nVoxels(1)], reshape(data, nVoxels));
camroll(90);
然后使用
I.CData(:) = data;
试。
但是,与使用drawnow()
更新数字相比,转置时间可能会微不足道。