作业帮 > 综合 > 作业

matlab 我是菜鸟,比如一个标准的二阶传递函数G(S)=ωn^2/(S^2+2*ζ*ωn*S+ωn^2)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 03:51:32
matlab 我是菜鸟,比如一个标准的二阶传递函数G(S)=ωn^2/(S^2+2*ζ*ωn*S+ωn^2)
由于过程需要 ωn ζ 取很多值 能不能将这个传递函数编成一个函数,要用的时候调用就可以了(能不能用function语句实现?)
这个很容易用function语句实现,首先说明一下,MATLAB中不识别ζ,这里用a代替ζ,这并不影响其它.
  在M文件中,输入并保存.
function f=G(wn,a)
syms S
f=wn.^2./(S^2+2*a.*wn.*S+wn.^2);
end
   在命令窗口中,输入:
     G(wn,a)
就可以得到你想要的结果了.
如:输入  G(2,3)
其结果为:4/(S^2 + 12*S + 4)
  输入 wn=[1,2,3];
a=[2,3,4];
G(wn,a)
其结果为:
[ 1/(S^2 + 4*S + 1),4/(S^2 + 12*S + 4),9/(S^2 + 24*S + 9)]
再问: 很谢谢你 但是我接下来需要给这个传递函数激励一个单位阶跃,>> G(1,0.1) ans = 1/(S^2 + S/5 + 1) >> t=0:0.01:20;y=step(G,t);plot(t,y) ??? Input argument "wn" is undefined. Error in ==> G at 3 f=wn.^2./(S^2+2*a.*wn.*S+wn.^2); 请问这是为什么呢? 谢谢
再答: 这个是因为y=step(G,t);中G必须为经tf后的传递函数.   得到上面的结果后,只需多加一条语句就行了.G=tf(1,[1,0.2,1]); 完整的程序: G=tf(1,[1,0.2,1]); t=0:0.01:20;y=step(G,t);plot(t,y)