matlab问题 已知:G(S)=1/(S^2 +S+1),画出该传递函数的频率特 不能用bode指令。

如题所述

% 传函定义
s=tf('s');
Gs=1/(s^2+s+1)

% 频率范围
w=logspace(-2,2,100)';

% 频率特性(复数)
[n d] = tfdata(G);
for i=1:length(w)
Gjw(i)=( n{1}*((j*w(i)).^(2:-1:0)).') / ( d{1}*((j*w(i)).^(2:-1:0)).');
end

% 绘制对数频率特性曲线
subplot(211)
semilogx(w,20*log10(abs(Gjw)))
ylabel('Magnitude (dB)')
subplot(212)
semilogx(w,angle(Gjw)*180/pi)
ylabel('Phase (deg)')
xlabel('Frequency (rad/sec)')追问

Gjw(i)=( n{1}*((j*w(i)).^(2:-1:0)).') / ( d{1}*((j*w(i)).^(2:-1:0)).');

这里运行的时候有错误

追答

你用的是什么版本?报错提示什么信息?
我在6.5和2007b上都测试过,应该没问题的。

刚又试了一下 ,有个小错:
[n d] = tfdata(G);
这一句的G应该改为Gs(原来用G,后来改Gs漏掉一处)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-05
[num.den] = tfdata(GS);
明天给你答案