「周波数応答」の版間の差分

201行目: 201行目:


MATLABのControl System Toolboxに含まれる<tt>bode</tt>関数を利用すると,簡単にボード線図を描画できる.リストsample2_4にスクリプト例を,図3に実行結果のグラフを示す.なお,この例では変数<tt>omega</tt>で周波数ベクトルを指定しているが,省略することもできる.その場合は<tt>bode</tt>関数が自動的に周波数範囲を設定して描画する.
MATLABのControl System Toolboxに含まれる<tt>bode</tt>関数を利用すると,簡単にボード線図を描画できる.リストsample2_4にスクリプト例を,図3に実行結果のグラフを示す.なお,この例では変数<tt>omega</tt>で周波数ベクトルを指定しているが,省略することもできる.その場合は<tt>bode</tt>関数が自動的に周波数範囲を設定して描画する.
[[ファイル:Bode_2_4.png|thumb|図3 <math>\displaystyle \frac{1}{s^2 + 0.5s+ 1}</math>のBode線図(<tt>bode</tt>関数利用)]]


sample2_4 <tt>bode</tt>関数を利用したボード線図の描画スクリプト
sample2_4 <tt>bode</tt>関数を利用したボード線図の描画スクリプト
214行目: 216行目:
  bode(sys, omega);
  bode(sys, omega);


[[ファイル:Bode_2_4.png|thumb|図3 <math>\displaystyle \frac{1}{s^2 + 0.5s+ 1}</math>のBode線図(<tt>bode</tt>関数利用)]]


リストsample2_4の例のように<tt>bode</tt>関数単体でグラフまで描画するが,ゲイン線図だけを描画したい時や,実験結果と重ねてグラフ化したい時などは,次のように,<tt>bode</tt>関数の左辺に変数をおくと,グラフ表示は行わず周波数応答の計算結果だけが得られる(ゲインは絶対値,位相は度の単位).
リストsample2_4の例のように<tt>bode</tt>関数単体でグラフまで描画するが,ゲイン線図だけを描画したい時や,実験結果と重ねてグラフ化したい時などは,次のように,<tt>bode</tt>関数の左辺に変数をおくと,グラフ表示は行わず周波数応答の計算結果だけが得られる(ゲインは絶対値,位相は度の単位).
224行目: 225行目:


なお,<tt>bode</tt>関数が多入出力に対応しているため,MATLABの場合左辺の変数<tt>gain</tt>と<tt>phase</tt>は3次元の行列として出力される(対象システム1入力1出力であっても).よって,<tt>plot</tt>関数で使用する前にこのスクリプト例のように<tt>squeeze</tt>関数で1次元ベクトルに変換する必要があるので注意する.
なお,<tt>bode</tt>関数が多入出力に対応しているため,MATLABの場合左辺の変数<tt>gain</tt>と<tt>phase</tt>は3次元の行列として出力される(対象システム1入力1出力であっても).よって,<tt>plot</tt>関数で使用する前にこのスクリプト例のように<tt>squeeze</tt>関数で1次元ベクトルに変換する必要があるので注意する.
[[ファイル:Bode_2_5.png|thumb|図4 <math>\displaystyle \frac{1}{s^2 + 0.5s+ 1}</math>のBode線図(<tt>bode</tt>関数利用,ゲイン線図のみ)]]


sample2_5 <tt>bode</tt>関数を利用したゲイン線図のスクリプト
sample2_5 <tt>bode</tt>関数を利用したゲイン線図のスクリプト
243行目: 246行目:
  ylabel('Gain (dB)');
  ylabel('Gain (dB)');
  grid( 'on');
  grid( 'on');
[[ファイル:Bode_2_5.png|thumb|図4 <math>\displaystyle \frac{1}{s^2 + 0.5s+ 1}</math>のBode線図(<tt>bode</tt>関数利用,ゲイン線図のみ)]]


=== 周波数応答(ベクトル軌跡)のプロット ===
=== 周波数応答(ベクトル軌跡)のプロット ===