gpt4 book ai didi

Matlab实时绘图

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:07 25 4
gpt4 key购买 nike

我是 matlab 的新手,我想实时绘制一些数据。我的方法如下:

figure;
hold on;

for i = 1:1000;
plot(i, i);
drawnow;
end

但性能较差。

我还在 stackoverflow 上找到了一个建议:https://stackoverflow.com/q/3118918/1066838但是只绘制了最后一组数据,所以我总是在图中看到一个点。

最佳答案

与其进行高级plot 调用,不如考虑调整line handle properties ,更具体地说是 XDataYData,在循环中:

figure(1);
lHandle = line(nan, nan); %# Generate a blank line and return the line handle

for i = 1:1000
X = get(lHandle, 'XData');
Y = get(lHandle, 'YData');

X = [X i];
Y = [Y i];

set(lHandle, 'XData', X, 'YData', Y);
end

这样做,代码前后的 tic/toc 给出 0.09 秒;正如您可能已经看到的那样,一个天真的 plot 给出了将近 20 秒的运行时间。

请注意,我在此示例中仅使用了get 来生成数据集;我假设对于实时绘图,您需要绘制一些 DatasetXDatasetY,因此您需要相应地处理数据。但最后,一旦您获得了要在特定时间绘制的数据集,只需设置该行的整个XDataYData .

最后,请注意,对于非常大的数据集,此 set 调用有点笨拙,因为我们必须每次都设置行的数据而不是附加到它。 (但它肯定仍然比使用 plot 快。)这可能足够好,具体取决于数据集更改的频率。参见 this question更多细节。


编辑:从 MATLAB R2014b 开始,animinatedline对象使得从流数据中绘制点变得更容易:

Animated line objects optimize line animations by accumulating data from a streaming data source. After you create the initial animated line using the animatedline function, you can add new points to the line without having to redefine the existing points. Modify the appearance of the animated line by setting its properties.

关于Matlab实时绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278368/

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