在循环中更改传递函数 - simulink

时间:2017-12-01 16:17:20

标签: matlab simulink

我开始使用Simulink,我有一个关于使用matlab for loop更改传递函数的问题。

假设我有以下问题:enter image description here

我的目标是" system"将等于:

enter image description here

基本上我想在5个不同的传输函数中从时间= 0到时间= 10运行5次Simulink仿真。

感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:0)

除非我误解了你的问题,否则我认为你不需要像这样使用Simulink。以下是我对你要做的事情的理解,它可以在普通的MATLAB中完成(使用control system toolbox):

t = 0:1e-3:10;
u = ones(size(t));
y = zeros(5,length(t));
for k=1:5
    H = (1 + tf('s')*5/k)^k; % system transfer function
    CL = 1/((tf('s'))^2*(1-H)); % closed-loop transfer function
    y(k,:) = (lsim(CL,u,t))';
end
plot(t,y)
legend('#1','#2','#3','#4','#5','Location','NorthWest')
grid on
xlabel('Time [s]')
ylabel('Output')

产生以下图(在Octave中)。只有前2次迭代才会产生非零输出:

enter image description here