0

只是为了解释我面临的问题,我有以下代码。

ind=(1:10);
A=[sin(ind);cos(ind);tan(ind);sec(ind)]';
plot(ind,A(:,1),ind,A(:,2),ind,A(:,3),ind,A(:,4));

结果如下所示:

在此处输入图像描述

现在,在我的真实程序中,矩阵 A 每隔几秒就会更新一次新行。我想在获得新行后立即动态更新图表。经过一番谷歌搜索后,我意识到我必须使用drawow,但不确定如何使用。

到目前为止,我有以下代码。

B=A(1,:);
h = plot(B,'YDataSource','B');
for k = 1:size(A,1)
   B=A(1:k,:);
   refreshdata(h,'caller') 
   drawnow
   pause(.25)
end

但我收到以下错误:

使用 refreshdata 时出错(第 70 行)无法从“B”刷新 YData。

测试错误(第 9 行) refreshdata(h,'caller')

请帮忙。

4

1 回答 1

1

我在谷歌搜索后解决了它。以下代码可以满足我的要求:

ind=(1:10);
A=[sin(ind);cos(ind);tan(ind);sec(ind)]';
plots=plot(ind(1,1),A(1,1),ind(1,1),A(1,2),ind(1,1),A(1,3),ind(1,1),A(1,4));
for k = 1:size(plots,1)
   set(plots, {'XData'}, {ind(1,1:k);ind(1,1:k);ind(1,1:k);ind(1,1:k)})
   set(plots, {'YData'}, {A(1:k,1);A(1:k,2);A(1:k,3);A(1:k,4)})
   drawnow
   pause(.5)
end

这个答案帮助我找到了解决方案:https ://stackoverflow.com/a/36155528/919177

于 2019-05-29T04:04:39.980 回答