gpt4 book ai didi

matlab - 用断开的/离散的线创建图

转载 作者:行者123 更新时间:2023-12-04 00:37:21 25 4
gpt4 key购买 nike

这是我的代码:

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”向量中的每个元素/值都表示一个事件,其中事件的开始日期和结束日期在“开始日期”和“enddate' 向量。因此,事件 id(1) 的开始日期为 startdate(i),结束日期为 enddate(i)。

程序从“id_unique”向量中获取一个值,对于在“id”中找到的每个匹配值,它在图中画一条线,表示开始以及事件结束时间。

例如,假设 55 是向量“id_unique”中的一个 id 值,我们在 id 中有这个值 1000 次。因此,对于 55,创建了一个情节,描绘了 1000 条单独的线,在事件开始时带有标记“o”,在事件结束时带有标记“o”,并且一条线连接两个标记。

enter image description here

请查看从该代码块生成的附加图。如果 id_unique 有 70 个值,则将从该代码创建 70 个这样的图。在图像中,由于开始日期和结束日期之间的差异很小,所以许多线太小,因此标记相互重叠,看起来像一个点。

现在问题来了,当'id_unique'中的id-value时,我们在'id'向量中有很多它的实例。当程序将单条线绘制到 100 条时,它运行得非常快,但在同一图中绘制 300 条线后,程序变慢了。当程序在同一张图中绘制 1000 条线时,每条线大约需要 5-7 秒。因此生成多条线的图需要花费很多时间。

有没有办法改进我的代码,使这些绘图生成更快。

最佳答案

你不需要循环:

你可以使用类似的东西:

a = 1:0.1:4*pi;
b = sin(a); %vector that represent the start of each line
c = sin(a)+1; %vector that represent the end of each line
plot([b;c],[a;a],'-ko','markersize',2)

结果:

enter image description here

函数 plot 需要 2 个参数:x 和 y,但是,这就是世界如此美丽的原因,函数 plot 可以管理多条线。如果 x 和 y 是矩阵,matlab 将每列解释为一个新行。

关于matlab - 用断开的/离散的线创建图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39747297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com