bode関数で描いた​ボード線図について、​位相の値を0°近傍か​らプロットするにはど​うすればよいですか?

15 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
回答済み: MathWorks Support Team 2013 年 10 月 25 日
bode関数で描いたボード線図について、位相の値を0°近傍からプロットするにはどうすればよいですか?

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 10 月 26 日
bode関数では、複素周波数応答から位相の値を計算する際に数値的に計算されているため、得られた位相が期待値と360°の整数倍ずれて表示される場合があります。
位相の値を0°近傍からプロットするには、以下の2通りの方法があります。
1. ltiviewerのプロパティエディタから設定する方法
2. コマンドから設定する方法
1. ltiviewerのプロパティエディタから設定する方法
(R14SP2以降のバージョンにて)bode関数やltiview関数を用いてボード線図を描いた後に設定できます。
bode関数によって描かれたボード線図のAxes上でダブルクリックし、立ち上がったプロパティエディタのオプションタブにある'位相のオフセットの調整'にチェックを入れ、'近くに位相を保持'を0に設定します(下図参照)。
位相オフセットの調整
上記にて設定を変更すると、下図の通り、位相の値が0°近傍でプロットされたボード線図が得られます。
変更後のボード線図
2. コマンドから設定する方法
下記コマンドを実行することで、1と同等の設定に変更できます。
ここでは、ボード線図を描くコマンドとして、bodeplot関数を用います。
sys = tf([-1 10],[0.1 1]); % ボード線図を描きたいシステムを定義
% bode関数のFigureプロパティを取得
p = bodeoptions;
% 位相オフセットの調整をOnに設定し、保持する値を0°に設定
p.PhaseMatching = 'on';
p.PhaseMatchingValue = 0;
% 変更した設定を用いてボード線図をプロット
bodeplot(sys,p)
【補足】
上記で得られたグラフのデータを取得するには、下記コマンドのように、bode関数で位相・振幅を出力した後に、位相値が0°になるよう、360°の整数倍を引きます。
また、R14SP1以前バージョンでは、本FAQで紹介した位相のオフセットオプションがないため、データを出力して位相値について360°の整数倍を引いた値をプロットする必要があります。
sys = tf([-1 10],[0.1 1]); % ボード線図を描きたいシステムを定義
% 周波数応答の値を出力し、振幅をdBへ変更し、位相値をシフト
[mag,phase,w] = bode(sys);
mag = squeeze(mag);
phase = squeeze(phase);
w = squeeze(w);
magdb = 20 .*log10(mag);
phase = phase - 360; % 位相を負の方向に 360°シフト
% ボード線図をプロット(R14より前のバージョンをご利用の場合)
subplot(2,1,1)
semilogx(w, magdb)
subplot(2,1,2)
semilogx(w, phase)

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeプロットのカスタマイズ についてさらに検索

製品


リリース

R2009a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!