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)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-06
可以。如果我没理解错的话,wn,ζ可以取成向量,向量的元素就是你的值,做算法的时候用数组运算就可以了。
function f=G(wn,ζ) (ζ不知道matlab能不能接受,如果不行换一个就好)
f=wn.^2/(s.^2+2*ζ.*wn+wn.^2)

在命令窗口,输入
wn=[1,2,3];ζ=[1,2,3]
G(wn,ζ)
就可以得到对应的结果
相似回答