Why plotting colocrbar slows down the performance of MATLAB
6 次查看(过去 30 天)
显示 更早的评论
Hello everyone. I have a question that I am not able to solve.
I have a cell array 'Temp' that defined the frames of a thermal video. Each cell defines an intensity image of the video. When I plot them using this:
tic
for i = 1:size(Temp,1)
imagesc(Temp{i});
drawnow;
end
toc
Elapsed time is 16.539161 seconds.
When I try to include the colorbar to get some unmerical idea about the thermal images, using the following code:
tic
for i = 1:size(Temp,1)
imagesc(Temp{i});
colorbar; % I just asked for the colorbar to be added
drawnow;
end
toc
Elapsed time is 79.288858 seconds.
Why this big change in the performance of the code when I add the colorbar? Can anyone explain or tell a workaround?
Thanks all and best,
Ahmad
2 个评论
Subhadeep Koley
2020-12-22
@Ahmad Gad You can call the colorbar function only once outside the for loop. No need call it iteratively.
Although, I'm not sure about your application, but by calling imagesc(Temp{i}) iteratively, you will only see the last frame of your video, as for every iteration the previous imagesc plot will be overwritten with the current one.
采纳的回答
Walter Roberson
2020-12-22
for K = 1 : 60; Temp{K} = rand(320,240); end
tic
fig = figure();
ax = axes(fig);
for i = 1:size(Temp,1)
imagesc(ax, Temp{i});
drawnow;
end
toc
tic
fig = figure();
ax = axes(fig);
for i = 1:size(Temp,1)
imagesc(ax, Temp{i});
colorbar(ax); % I just asked for the colorbar to be added
drawnow;
end
toc
Yup, colorbar added was a lot slower.
tic
fig = figure();
ax = axes(fig);
colorbar(ax); % I just asked for the colorbar to be added
hold(ax, 'on');
h = imagesc(ax, Temp{1});
for i = 2:size(Temp,1)
h.CData = Temp{i};
drawnow;
end
hold(ax, 'off')
toc
But being careful about using handles is faster.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!