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

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

采纳的回答

MathWorks Support Team
■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 个)

Community Treasure Hunt

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

Start Hunting!