Main Content

コマンド ラインを使用した周波数領域における線形化の検証

この例では、周波数応答の推定を使用してブロックごとの解析的な線形化結果を検証する方法を説明します。この例を実行するには、Aerospace Blockset™ ソフトウェアが必要です。

モデルの線形化

軽量飛行機の Simulink® モデルを開きます。このモデルの詳細については、Lightweight Airplane Design (Aerospace Blockset)を参照してください。

mdl = 'scdskyhogg';
open_system(mdl)

軽量飛行機モデルを、高度コマンド信号 AltCmd から測定された高度 h_sensed まで線形化することができます。これらの線形解析ポイントは、既にモデルで指定されています。

io = getlinio(mdl)
2x1 vector of Linearization IOs: 
--------------------------
1. Linearization input perturbation located at the following signal:
- Block: scdskyhogg/Pilot/Add
- Port: 1
- Signal Name: AltCmd
2. Linearization output measurement located at the following signal:
- Block: scdskyhogg/Vehicle System Model/Avionics/Autopilot/Bus Selector1
- Port: 1
- Signal Name: <h_sensed>

関数 linearize を使用してモデルを線形化します。モデルは、t = 75 のシミュレーション スナップショットを使用して取得した操作点を使用するよう事前に設定されています。

sys = linearize(mdl,io);
bode(sys)

周波数応答の推定

線形化の結果が 6.28 rad/s 付近の反共振振動数など、非線形モデルの特性を適切に捉えているかどうかを判断するために、frestimate を使用して線形化の結果を検証できます。

sinestream の入力信号を作成します。線形化結果を入力引数として使用し、一連の周波数と各周波数の周期数など、線形システムに基づいて sinestream の入力信号のさまざまなパラメーターを自動的に設定します。

in = frest.Sinestream(sys);
in.Amplitude = 0.5
 
The sinestream input signal:
 
      Frequency           : [0.0034142;0.0054345;0.0086502;0.013768 ...] (rad/s)
      Amplitude           : 0.5
      SamplesPerPeriod    : [110417;69370;43582;27381 ...]
      NumPeriods          : [4;4;4;4 ...]
      RampPeriods         : 0
      FreqUnits (rad/s,Hz): rad/s
      SettlingPeriods     : [1;1;1;1 ...]
      ApplyFilteringInFRESTIMATE (on/off)    : on
      SimulationOrder (Sequential/OneAtATime): Sequential
 

応答を計算する 25 の周波数が選択されます。これらの周波数は 0.0034 ~ 14.5 rad/s の間で変化します。自動的に選択される周波数は、興味深いダイナミクスの発生するところ (6.28 rad/s の反共振振動数など) にフォーカスします。システムが定常状態に到達するのに要する期間数は、これらの周波数ごとに推定され、1 期間 (0.0034 rad/s の場合) ~ 188 期間 (14.5 rad/s の場合) で変動します。

この入力信号を使用して周波数応答を推定します。frestimate は入力信号でモデルをシミュレートしますが、これは、通常のシミュレーション モデルでは長時間かかる場合があります。シミュレーションを高速化するには、ラピッド アクセラレータ モードを使用するようにモデルを設定します。

set_param(mdl,'SimulationMode','rapid');

ラピッド アクセラレータ モードを使用すると、シミュレーションの速度を大幅に上げることができます。実際の速度改善は、コンピューターの構成によって決まります。

周波数応答の推定を実行するには次のコマンドを使用します。

sysest = frestimate(mdl,in,io);

この例では、MAT ファイルから推定結果を読み込むことができます。

load scdskyhogg_frestresults.mat;

解析的な線形化結果を frestimate からの周波数応答データと比較します。周波数応答データと解析的な線形化結果はよく一致し、周波数 1 rad/s と 10 rad/s 間の反共振振動数は実際の非線形飛行機モデルに存在することが確認されます。

bode(sys,sysest,'r*')

モデルを閉じます。

bdclose('scdskyhogg')

参考

関連するトピック