Bode
15 ビュー (過去 30 日間)
古いコメントを表示
I am new to Matlab. I need to use the Bode command. When I run my code, I get this error: "Undefined function or method 'bode' for input arguments of type 'double'."
回答 (3 件)
Oleg Komarov
2011 年 7 月 6 日
You may not have the Control System Toolbox. To check that type ver in the command window.
0 件のコメント
Paulo Silva
2011 年 7 月 6 日
Besides Oleg suggestion, bode doesn't take double arguments, you must provide one transfer function instead.
%simple example from the bode function documentation
g = tf([1 0.1 7.5],[1 0.12 9 0 0]);
bode(g)
Here's a way to do the bode plot without the control toolbox:
sys=@(s) (s.^2+0.1*s+7.5)./(s.^4+0.12.*s.^3+9*s.^2)
w=1:0.01:40;
amp=10*log10(abs(sys(w*i)));
ang=angle(sys(w*i))*180/pi;
subplot(211)
plot(w,amp)
title(char(sys))
ylabel('Magnitude (DB)')
set(gca,'xscale','log')
subplot(212)
plot(w,ang)
set(gca,'xscale','log')
xlabel('frequency (rad/sec)')
ylabel('phase (deg)')
2 件のコメント
Seng Tak Goh
2019 年 4 月 18 日
Hi Paulo,
That was amazing! Do you mind to explain how sys=@(s) actually does the trick?
Many thanks in advance!
Hamed Pouria
2019 年 7 月 6 日
It has some promlems.
in line 3 you must write :
amp=20*log10(abs(sys(w*i)));
and also if the number of poles - number of zeros of the system will be bigger than 2 (for example 3) it does not work correctly because of the strict of the function angle(); It will return the phase angles only within the interval [-pi to pi].
参考
カテゴリ
Help Center および File Exchange で Classical Control Design についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!