我开始使用Simulink,我有一个关于使用matlab for loop更改传递函数的问题。
我的目标是" system"将等于:
基本上我想在5个不同的传输函数中从时间= 0到时间= 10运行5次Simulink仿真。
感谢任何帮助。 谢谢。
答案 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次迭代才会产生非零输出: