我需要你的帮助。我的程序读取一个M-File,这是一个录制的视频。 要显示每个图像我使用“imagesc”,因为图像被保存为200x200矩阵,归一化值范围从0到1.剧情没有重置
读完每幅图像后,我做一些微积分。结果应显示为图像的叠加图(一个点和一个线)。使用下面的代码,可以按照循环的第一次迭代的预期工作。
在所有进一步的迭代中,图像都被重绘(这是正确的),但点和线不被清除。
我该如何实现在显示新图像时清除图。 我用“hold”命令尝试了几个变体。但没有成功。
附加问题(不是那么重要): 是否可以用“set”(特别是Point)交换下面的“plot”命令?
我的程序由多个Axes Elements组成,这些Axes Elements为了保持简单的例子而剪掉了。这意味着我的用户界面非常缓慢的“情节”命令,所以我试图加快与“设置”。
它工作得很好,但我不确定一个简单的Point是否可以用“set”显示。
在此先感谢。
function work()
h_figure = figure('Name','MainFig');
hImage.ax = axes('Units', 'Pixels','Position', [50 375 200 200]);
imagesc('Parent',hImage.ax,'CData',zeros(200));
hImage.axc = get(gca, 'Children');
hProfileLeft.ax = axes('Position', [50 200 200 100]);
hProfileLeft.pl = plot(hProfileLeft.ax, 1:200);
for(frame = obj.Startframe:obj.Endframe)
imgIntens= obj.video.A.intens(:,:,frame);
ProfileResult = doSomeCalc(someArgs);
set(hImage.axc, 'CData', imgIntens); % Show Image(200x200 double)
hold(hImage.ax, 'on'); % Using hold so that plot is overlayed
plot(ProfileResult.peaks.x, ProfileResult.peaks.y,'Parent',hImage.ax); % Simple Point
plot(ProfileResult.corridor.left, 1:200, 'Parent',hImage.ax); % Line
set(hProfileLeft.pl,'YData', ProfileResult.trace); % Draw data to different axes
hold(hImage.ax, 'off');
end
end