为了解释我所面临的问题,我有以下代码。
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')
请帮助。
答案 0 :(得分: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