Main Content

getPeakGain

動的システム周波数応答のピーク ゲイン

説明

gpeak = getPeakGain(sys) は、動的システム モデル sys のピーク入力/出力ゲインを絶対単位で返します。

  • sys が SISO モデルの場合、ピーク ゲインは周波数応答振幅の最大値になります。

  • sys が MIMO モデルの場合、ピーク ゲインは sys の周波数応答 2 ノルム (周波数全体での最大特異値) の最大値になります。この量は sys の L ノルムとも呼ばれ、安定したシステムの H ノルムと同じになります (norm を参照)。

  • sys が調整可能な、または不確かなパラメーターをもつモデルである場合、getPeakGainsys の現在の値、またはノミナル値のピーク ゲインを評価します。

  • sys がモデル配列の場合、getPeakGaingpeak(k) = getPeakGain(sys(:,:,k))sys と同じサイズの配列を返します。

gpeak = getPeakGain(sys,tol) は相対的な精度が tolsys のピーク ゲインを返します。

gpeak = getPeakGain(sys,tol,fband) は、周波数範囲 fband = [fmin,fmax] (0 ≤ fmin < fmax) のピーク ゲインを返します。この構文は、複素係数をもつモデルについて [–fmax,–fmin] の帯域での負の周波数も考慮しています。

[gpeak,fpeak] = getPeakGain(___) もまた、ゲインがピーク値 gpeak に達する周波数 fpeak を返し、上記構文の任意の入力引数を含めることができます。複素係数をもつシステムについては、fpeak は負の場合があります。

すべて折りたたむ

以下の伝達関数の共振のピーク ゲインを計算します。

sys=90s2+1.5s+90.

sys = tf(90,[1,1.5,90]);
gpeak = getPeakGain(sys)
gpeak = 6.3444

getPeakGain コマンドはピーク ゲインを絶対単位で返します。

伝達関数の共振のピーク ゲインを 0.01% の相対精度で計算します。

sys=90s2+1.5s+90.

sys = tf(90,[1,1.5,90]);
gpeak = getPeakGain(sys,0.0001)
gpeak = 6.3444

2 番目の引数で 0.0001 の相対精度を指定します。getPeakGain コマンドは、伝達関数の真のピーク ゲインの 0.0001 (0.01%) 以内にある値を返します。既定では、相対精度は 0.01 (1%) です。

以下の伝達関数の高周波共振のピーク ゲインを計算します。

sys=(1s2+0.2s+1)(100s2+s+100).

sys は 1 rad/s と 10 rad/s での共振の積です。

sys = tf(1,[1,.2,1])*tf(100,[1,1,100]);
fband = [8,12];
gpeak = getPeakGain(sys,0.01,fband);

fband 引数によって、getPeakGain は 8 ~ 12 rad/s の局所的なピーク ゲインを返すようになります。

2 つの共振のうち、以下の伝達関数の高い方のゲインをもつ共振はどちらかを同定します。

sys=(1s2+0.2s+1)(100s2+s+100).

sys は 1 rad/s と 10 rad/s での共振の積です。

sys = tf(1,[1,.2,1])*tf(100,[1,1,100]);
[gpeak,fpeak] = getPeakGain(sys)
gpeak = 5.0747
fpeak = 0.9902

fpeak はピーク ゲイン gpeak に対応する周波数です。1 rad/s のピークは sys の全体のピーク ゲインです。

複素係数をもつシステムでは、指定する形状と fband によって、getPeakGain は負の周波数または正の周波数でのピークを返す場合があります。

複素数データをもつランダムな状態空間モデルを生成します。

rng(1)
A = complex(randn(10),randn(10));
B = complex(randn(10,3),randn(10,3));
C = complex(randn(2,10),randn(2,10));
D = complex(randn(2,3),randn(2,3));
sys = ss(A,B,C,D);

ピーク ゲインを 0.1% の相対精度で計算します。また、fband = [0,1] と指定して、周波数範囲 [–1,1] でピークを計算します。

[gPeak,fPeak] = getPeakGain(sys,1e-3,[0,1])
gPeak = 126.2396
fPeak = -0.4579

この範囲で、sys は負の周波数値でピークに到達します。この範囲で特異値プロットを作成し、結果を確認します。

w = linspace(-1,1,100);
opt = sigmaoptions;
opt.FreqScale = 'Linear';
opt.MagUnits = 'abs';
sigmaplot(sys,w,opt)

ここで、周波数範囲 [–50,–1] ∪ [1,50] でピーク ゲインを計算します。これを行うには fband = [1,50] と指定します。

[gPeak,fPeak] = getPeakGain(sys,1e-3,[1,50])
gPeak = 43.3303
fPeak = 1.8097

この範囲で、sys は正の周波数値でピークに到達します。

この範囲で特異値プロットを作成し、結果を確認します。

w = linspace(-50,50,5000);
sigmaplot(sys,w,opt)

この範囲で、getPeakGain は、プロットで示される、より低いピークでの振幅値と周波数値を返します。

入力引数

すべて折りたたむ

任意の動的システム モデルまたはモデル配列として指定された、動的システムを入力する。sys は SISO または MIMO です。

正の実数スカラー値として指定された、ピーク ゲインの相対精度。getPeakGaingpeaksys の真のピーク ゲインのわずかな差が tol 以下になるように gpeak を計算します。既定値は 0.01 です。これは、gpeak が真のピーク ゲインの 1% 以内であることを意味します。

正の実数値の 1 行 2 列のベクトルとして指定された、ピーク ゲインを計算する周波数範囲。fband は、[fmin,fmax] 形式で 0 ≤ fmin < fmax の行ベクトルとして指定します。

複素係数をもつモデルでは、getPeakGain は、[–fmax,–fmin][fmin,fmax] の範囲でピーク ゲインを計算します。その結果、関数は負の周波数でのピークを返す場合があります。

出力引数

すべて折りたたむ

動的システム モデルまたはモデル配列 sys のピーク ゲイン。スカラー値または配列として返されます。

  • sys が単一モデルの場合、gpeak はスカラー値になります。

  • sys がモデル配列の場合、gpeakgpeak(k) = getPeakGain(sys(:,:,k))sys と同じサイズの配列になります。

ゲインがピーク値 gpeak に達する周波数。実数スカラー値または実数値の配列として返されます。周波数はラジアン/TimeUnit 単位で、sysTimeUnit プロパティに相対して表されます。

  • sys が単一モデルの場合、fpeak はスカラーになります。

  • sys がモデル配列の場合、fpeaksys と同じサイズの配列になり、fpeak(k)sys(:,:,k) のピーク ゲイン周波数になります。

fpeak は複素係数をもつシステムに対して負になる場合があります。

アルゴリズム

getPeakGain[1]のアルゴリズムを使用します。固有ベクトルの計算はすべて、SLICOT ライブラリの構造維持アルゴリズムを使用して実行されます。SLICOT ライブラリの詳細については、https://github.com/SLICOTを参照してください。

参照

[1] Bruinsma, N.A., and M. Steinbuch. "A Fast Algorithm to Compute the H Norm of a Transfer Function Matrix." Systems & Control Letters, 14, no.4 (April 1990): 287–93.

バージョン履歴

R2012a で導入

参考

| | | | | (Robust Control Toolbox)