【发布时间】:2016-09-28 12:18:05
【问题描述】:
这是我的代码:
for p = 1:length(id_unique)
h=figure;
hold on
j = 1;
for i = 1:1:length(id)
if id_unique(p)==id(i)
h=plot([startdate(i),enddate(i)],[j,j],'ok-');
hold on
j = j + 1;
end
end
grid on
hold off
savefig([plotname,'.fig'])
print(plotname,'-djpeg','-r300')
close
end
% id: integer vector containing 50000 values
% id_unique: sorted unique values from vector 'id'
% startdate: datetime vector containing 50000 dates
% enddate: datetime vector containing 50000 dates
“id”向量中的每个元素/值都表示一个事件,其中该事件的开始日期和结束日期在“startdate”和“ enddate' 向量。 因此,事件 id(1) 在 startdate(i) 中具有开始日期,在 enddate(i) 中具有结束日期。
程序从 'id_unique' 向量中获取一个值,对于在 'id' 中找到的每个匹配值,它会在图中画一条线,表示开始以及活动的结束时间。
例如,假设 55 是向量“id_unique”中的一个 id 值,我们在 id 中有 1000 次这个值。因此,对于 55,创建了一个图,描绘了 1000 条单独的线,事件开始时带有标记“o”,事件结束时有标记“o”,以及连接两个标记的线。
请查看从该代码块生成的附加图。如果 id_unique 有 70 个值,则将从该代码创建 70 个这样的图。在图像中,由于开始日期和结束日期之间的差异很小,许多线条太小,所以标记相互重叠,看起来像一个点。
现在问题来了,对于 'id_unique' 中的 id 值,我们在 'id' 向量中有很多它的实例。当程序将单条线绘制到 100 条时,它的工作速度非常快,但是在同一图中绘制 300 条线后,程序变得很慢。当程序在同一图中绘制 1000 条线时,每条线大约需要 5-7 秒。所以生成一个多行的图需要很多小时。
有没有办法改进我的代码以使这些绘图生成更快。
【问题讨论】:
标签: matlab plot matlab-figure