作业帮 > 综合 > 作业

matlab如何做出动态图?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/23 16:42:35
matlab如何做出动态图?
我现在得到一系列数据.T 和 A.T是一个列向量 A是与T对应的一个矩阵 对于A的每一列,代表的是一个波导的某个物理量随时间的变化.对于T的每一行,代表的是不同的波导的某一物理量的大小.
对于每一个T中每个元素,A有一个行向量与之对应,可以画出一个图形.
我想换一个连续变化的图,就是T不断变大的时候,行向量随T的变化的图形
由于没有你的数据,这里前面的部分代码使用二阶系统阶跃响应生成测试数据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、前面生成测试数据的部分没有改动,所以只贴出后面的动画部分。