Control System Toolboxの関数 BODE を利用してボード線図​を描く場合、デフォル​トの周波数軸の単位 rad/sec ではなく Hz 単位で表示するにはどうすればよいですか?

Control System Toolboxの関数 BODE を利用してボード線図を描く場合、デフォルトの周波数軸が単位 rad/sec になっています。Hz単位で表示する方法をおしえてください。

 채택된 답변

MathWorks Support Team
MathWorks Support Team 2019년 3월 1일

0 개 추천

■MATLAB 6.x(R12.x)以降の場合 (Javaベースの機能をサポートするプラットフォームのみ)
関数BODEを実行して表示されたボード線図上で、マウスを右クリックして 表示されるコンテキストメニューから、「プロパティ」を選択して下さい。
プロパティエディタウィンドウが表示されますので、ここの「単位」タグから、 周波数の単位に「Hz」を選択して下さい。
なお、ここでの設定内容は、このボード線図に対してのみ有効になります。 デフォルトとして設定を有効にする場合には、コマンドウィンドウ上より
>> ctrlpref
を実行して表示される「Control System Toolboxの設定」ウィンドウの 「単位」タグで設定して下さい。
(注)Javaの機能を利用しておりますので、-nojvmオプションを指定して起動した MATLAB上では利用できません。 また、Javaベースの機能がサポートされていないプラットフォーム上では、 以下のVer5.xの場合をご利用ください。
■MATLAB 5.xの場合
関数bodeは、周波数のデータと対応するゲインのデータと位相のデータを出力引数として取ることができます。これらのデータをもとに、周波数軸の単位系を変換後、応答を表示します。
つぎの手順で実行します。
システムを定義します。ここでは、
1
G(s) = -----------------
s^2 + s + 10
を定義してみます。
>> G = tf(1,[1 1 10]);
ボード線図を表示するためのデータを取得します。
>> [mag,phase,w] = bode(G);
各データはつぎのようになっています。
w : 周波数データ (rad/sec)
mag : ゲインのデータ
phase : 位相のデータ
単位系を変換します。
>> f = w/(2*pi); % rad/sec --> Hz
また、ゲインのデータと位相のデータが3次元の行列データになっているので、後で応答を表示するために、2次元の行列データに変換します。(3次元データになっているのは、多入出力系に対応するためです。)
>> [Ny,Nu,Nn] = size(G);
>> Nw = length(w);
>> mag = reshape(mag,[Ny*Nu Nw]);
>> phase = reshape(phase,[Ny*Nu Nw]);
応答を表示します。
>> figure
>> subplot(2,1,1)
>> semilogx(f,20*log10(mag)) % ゲインの応答
>> title('Bode Diagram')
>> ylabel('Gain [dB]')
>> grid on
>> set(gca,'XLim',[f(1) f(end)]) % 表示範囲の変更
>> subplot(2,1,2)
>> semilogx(f,phase) % 位相の応答
>> xlabel('Frequency [Hz]')
>> ylabel('Phase [deg]')
>> grid on
>> set(gca,'XLim',[f(1) f(end)]) % 表示範囲の変更

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 プロットのカスタマイズ에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!