matlab如何做出动态图?

我现在得到一系列数据。T和A。T是一个列向量A是与T对应的一个矩阵对于A的每一列,代表的是一个波导的某个物理量随时间的变化。对于T的每一行,代表的是不同的波导的某一物理量... 我现在得到一系列数据。T 和 A。T是一个列向量 A是与T对应的一个矩阵 对于A的每一列,代表的是一个波导的某个物理量随时间的变化。对于T的每一行,代表的是不同的波导的某一物理量的大小。
对于每一个T中每个元素,A有一个行向量与之对应,可以画出一个图形。
我想换一个连续变化的图,就是T不断变大的时候,行向量随T的变化的图形
展开
 我来答
tianxiawulang
推荐于2017-12-16 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2551万
展开全部
由于没有你的数据,这里前面的部分代码使用二阶系统阶跃响应生成测试数据T和A,你需要的代码是后面的那部分。

% 生成测试数据
zeta = 0 : 0.1 : 2;
T = (0 : 0.1 : 10).';
A = zeros(length(T), length(zeta));
for i = 1 : length(zeta)
sys = tf(1, [1 2*zeta(i) 1]);
A(:, i) = step(sys, T);
end

% T变化时,A的行向量变化动态图
h = plot(A(1, :));
set(gcf,'DoubleBuffer','on');
axis([1 size(A,2) min(A(:)) max(A(:))]);
for i = 1 : length(T)
set(h, 'YData', A(i, :));
title(['T = ' num2str(T(i), '%.1f')]);
drawnow
end
追问
时间间隔是怎么定的? 
图形变化太快了。
追答
抱歉,最近事情忙,没能及时回答。

对代码做了一点修改:

% T变化时,A的行向量变化动态图
h = plot(A(1, :));
axis([1 size(A,2) min(A(:)) max(A(:))]);
T0 = 0.1; % 间隔时间
t0 = now*24*3600;
for i = 1 : length(T)
set(h, 'YData', A(i, :));
title(['T = ' num2str(T(i), '%.1f')]);
drawnow
while 1
t1 = now*24*3600;
if t1-t0 >= T0, t0 = t1; break, end
end
end

简单说明两点:
1、可以通过修改T0的值调整变化速度;
2、前面生成测试数据的部分没有改动,所以只贴出后面的动画部分。
XiaoXiongHUST
2013-07-21
知道答主
回答量:37
采纳率:0%
帮助的人:13.3万
展开全部
你需要将它保存为movie的格式吗?如果需要的话,需要用Movie(M),例子
clear all
clc
clear all
clc
x=0:pi/50:2*pi;
y=sin(x);
plot(x,y)
h=line(0,0,'color','r','marker','.','markersize',40);
axesValue=axis;
A(1:length(x))=struct('cdata',[],'colormap',[]);
for jj=1:length(x)
set(h,'xdata',x(jj),'ydata',y(jj));
axis(axesValue);
drawnow
A(jj)=getframe;
end
movie2avi(A,'ex_movie2avi','compression','none')

或者可以制作gif格式的动画:
x=0:pi/50:2*pi;
y=sin(x);
plot(x,y)
h=line(0,0,'color','r','marker','.','markersize',40);
axesValue=axis;
A(1:length(x))=struct('cdata',[],'colormap',[]);
for jj=1:length(x)
set(h,'xdata',x(jj),'ydata',y(jj));
axis(axesValue);
drawnow
f=getframe;
f=frame2im(f);
[X,map]=rgb2ind(f,256);
if mod(jj,10)==1
if jj==1
imwrite(X,map,'ex_imwrite.gif');
else
imwrite(X,map,'ex_imwrite.gif','WriteMode','Append');
end
end
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真greatdju
2013-07-21 · TA获得超过3855个赞
知道小有建树答主
回答量:1300
采纳率:91%
帮助的人:735万
展开全部
每画好一个图后drawnow一下(或者pause一下指定的时间),再画下一个图,用for循环画。
下面只是一个小例子,你自己依葫芦画瓢即可
n=-2:0.01:2;
x=linspace(-pi,pi);
for k=n
plot(x,sin(k*x));
drawnow;
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式