有没有办法在matlab上绘制闭环系统的动画?

时间:2018-12-19 19:01:10

标签: matlab controls matlab-figure

在matlab上是否可以制作闭环系统动画而不是图片动画?

我尝试使用for循环更改阶跃响​​应的仿真时间,对于每个for循环交互,我尝试使用step()函数每秒进行一次模拟,但是模拟函数仅在第一个显示结果交互,绘制结果图像必须随着时间的推移绘制多个图像,以产生动画效果。

我希望看到系统阶跃响应或斜坡响应随时间的变化。

Code that i tried to make the animation of a closed-loop transfer function

Error message using getframe and movie in Matlab

Animation of a closed loop transfer function on Matlab

1 个答案:

答案 0 :(得分:0)

您可以在循环中创建一系列图,并将每个图捕获为一帧,然后使用 movie 功能播放电影。

一个例子如下:

% capture each plot as a frame and store the frames in M

for k = 1:16
    plot(fft(eye(k+16)))
    axis([-1 1 -1 1])
    M(k) = getframe;
end

% play recorded movie frames

figure
movie(M)

以下是参考链接: https://www.mathworks.com/help/matlab/creating_plots/record-animation-for-playback.html

根据您的情况,可以对代码进行如下修改:

j = 0;
loops = 6;
Ini = 0;
End = 1; 

num = [9];
den = [1 2 9];
FT = tf(num, den);
CL = feedback(FT, 1);

figure;

while j < loops

  t = Ini:0.01:End; 

  hold on 
  step(CL, 'y', t);  
  hold off
  axis([0 10 0 1]);

  j = j+1;
  Ini = Ini+1;
  End = End+1;

  M(j) = getframe;

end

movie(M)

希望有帮助。