メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

周波数応答推定のトラブルシューティング

R2026a

トラブルシューティングするタイミング

周波数応答の推定を解析しても、周波数応答プロットが予想したシステムの動作と一致しない場合は、時間応答プロットと FFT プロットを使用して結果を改善できます。

推定に時間がかかる場合や推定中にメモリが足りなくなった場合は、推定速度とメモリの管理を参照してください。

時間応答が定常状態にならない

この時間応答は定常状態に到達していません。

このプロットには、定常状態の時間応答が示されています。

周波数応答推定には、定常状態の入力信号と出力信号が必要であるため、過渡状態によって推定結果が不正確になります。

sinestream 入力信号の場合、過渡状態がスペクトル リーケージによって直接的または間接的に推定を妨げることがあります。チャープ入力信号の場合は、過渡状態によって推定が妨げられます。

考えられる原因アクション
モデルが定常状態に初期化できない。
(Sinestream 入力) 出力の周期が定常状態に到達するのに不十分である。
  • NumPeriods と SettlingPeriods を変更して、定常状態に到達しない周波数の周期数を増やします。推定用の入力信号の変更を参照してください。

  • 推定時にフィルター処理が有効であることを確認します。ApplyFilteringInFRESTIMATE オプションを on に設定してフィルター処理を有効にします。推定でフィルター処理を使用する方法の詳細については、frestimate のリファレンス ページを参照してください。

(チャープ入力) 信号による周波数範囲のスイープが速すぎる。NumSamples を増やしてシミュレーション時間を長くします。推定用の入力信号の変更を参照してください。

推奨アクションを試した後、次のいずれかを実行します。

  • すべての周波数で推定を再計算する

  • 特定の周波数範囲で推定を再計算する (sinestream 入力信号の場合のみ)

特定の周波数範囲で推定を再計算するには、次の手順に従います。

  1. 推定結果を再計算する周波数を決定します。次に、関数 fselect を使用して、これらの周波数における sinestream 入力信号の一部を抽出します。

    たとえば、次のコマンドは入力信号 input から 10 ~ 20 rad/s の sinestream 入力信号を抽出します。

    input2 = fselect(input,10,20);

  2. 抽出した sinestream 入力信号 input2 のプロパティを変更します (推定用の入力信号の変更を参照)。

  3. frestimate を使用して、変更した入力信号で周波数応答 sysest2 を推定します。

  4. 元の推定周波数応答 sysest と再計算した推定周波数応答 sysest2 を次のようにしてマージします。

    1. 関数 fdel を使用して、sysest の周波数における sysest2 からデータを削除します。

      sysest = fdel(sysest,input2.Frequency)

    2. 関数 fcat を使用して、元の応答と再計算した応答を連結します。

      sys_combined = fcat(sysest2,sysest)

推定された周波数応答の解析で説明されているように、再計算した周波数応答を解析します。

時変ソース ブロックがある場合の周波数応答の推定例については、周波数応答推定に対する時変ソース ブロックの影響を参照してください。

FFT に、入力信号の周波数以外の周波数で大きな高周波が含まれる

FFT プロットに入力信号以外の周波数で大きな振幅が表示された場合、モデルは線形範囲外で動作しています。この状況は、線形システムの応答を小さな摂動へと解析する際には問題の原因となる場合があります。

線形範囲で動作しているモデルの場合、y(t) の入力振幅 A1 は、その他の高周波 A2 および A3 の振幅より大きくなければなりません。

u(t)=A1sin(ω1+ϕ1)y(t)=A1sin(ω1+ϕ1)+A2sin(ω2+ϕ2)+A3sin(ω3+ϕ3)+...

入力信号の振幅を調整してその他の高周波の影響を軽減し、推定を繰り返します。通常、入力振幅レベルを下げて、モデルの線形範囲内での動作を維持する必要があります。

信号振幅の変更の詳細は、次のいずれかを参照してください。

時間応答が制限なく拡大する

時間応答が制限なく拡大する場合、周波数応答推定結果が正しくありません。周波数応答推定は、操作点の近くでのみ正確です。

表にリストされている推奨アクションを実行して、推定を繰り返します。

考えられる原因アクション
モデルが不安定である。関数 frestimate を使用して周波数応答を推定することはできません。代わりに、正確な線形化を使用して、モデルの線形表現を取得します。Simulink モデルのモデル操作点での線形化または linearize のリファレンス ページを参照してください。
安定モデルが定常状態でない。モデル内のすべてのソース ブロックを無効にし、定常状態の操作点を使用して推定を繰り返します。定常状態の操作点の計算を参照してください。
安定モデルが遷移中の過渡状態を取得している。

モデルが遷移中の過渡状態を取得する場合は、NumPeriods を変更して入力信号の周期数を増やします。定常状態の操作点を使用して推定を繰り返します。

時間応答が不連続であるか、ゼロである

時間応答中の不連続性またはノイズは、入力信号の振幅が小さすぎてモデル内の不連続なブロックの影響を克服できないことを示します。不連続なブロックの例には、Quantizer、Backlash、Dead Zones などがあります。

sinestream 入力信号を使用し、フィルター処理で推定した場合、シミュレーション結果のビューアーでフィルター処理をオフにして、フィルター処理されていない時間応答を確認します。

Quantizer ブロックをもつ次のモデルは、小さすぎる入力信号の影響の例を示しています。このモデルを推定すると、フィルター処理していないシミュレーション出力に不連続性が含まれます。

入力信号の振幅を大きくして、推定を繰り返します。

振幅を大きくすると、Quantizer ブロックをもつモデルのフィルター処理されていないシミュレーションされた出力はスムースです。

信号振幅の変更の詳細は、次のいずれかを参照してください。

時間応答にノイズが多い

時間応答にノイズが多い場合、周波数応答推定結果に偏りがある可能性があります。

関数 frestimate は、モデルにノイズがあるブロックをもつ Simulink® モデルの周波数応答推定をサポートしていません。frest.findSources でそのようなブロックを見つけて、関数 frestimate の BlocksToHoldConstant オプションを使用してそれらを無効にします。

ノイズがあるモデルを推定する必要がある場合は、関数 frestimate を使用して、モデルを変更せずに Simulink モデルからの出力信号をシミュレートして推定します。次に、Signal Processing Toolbox™ または System Identification Toolbox™ ソフトウェアを使用して、モデルを推定します。

指定した入力信号に応じてモデルの出力をシミュレーションするには、次の手順に従います。

  1. 乱数入力信号を作成します。以下に例を示します。

    in = frest.Random('Ts',0.001,'NumSamples',1e4);
    

    独自のカスタム信号を timeseries オブジェクトとして指定することもできます。以下に例を示します。

    t = 0:0.001:10;
    y = sin(2*pi*t);
    in_ts = timeseries(y,t);
  2. モデルをシミュレーションして出力信号を取得します。以下に例を示します。

    [sysest,simout] = frestimate(model,op,io,in_ts)
    

    frestimate の 2 番目の出力引数 simout は、Simulink.Timeseries オブジェクトで、シミュレーションの出力を保存します。in_ts は、対応する入力データです。

  3. その他の MathWorks® 製品で使用する前に、以下のように timeseries オブジェクトを生成します。

    input = generateTimeseries(in_ts);
    output = simout{1}.Data;

    timeseries オブジェクトからのデータを Signal Processing Toolbox ソフトウェアで直接使用するか、これらのオブジェクトを System Identification Toolbox データ形式に変換することができます。例については、Signal Processing Toolbox を使用したノイズがある周波数応答モデルの推定とSystem Identification Toolbox を使用したノイズがある周波数応答モデルの推定を参照してください。

関連する例は、周波数応答の推定中にノイズ源を無効にするを参照してください。

滑らかに変化しない高調波を示す時間応答

推定された周波数応答の結果が、おそらく特定の周波数範囲にわたってのみ、線形システムのボード線図と一致しません。時間応答が滑らかに変化しない振幅を示している場合、追加の周波数成分がその応答に影響を与えています。こうした追加の周波数成分は定義済みの入力信号から取得されます。

frest.Sinestream を使用して入力信号が作成されると、SamplesPerPeriod の既定値は 40 になります。こうした既定の設定で生成される入力信号は粗いため、ボード線図で不一致が生じます。

より滑らかな入力信号を作成するには、SamplesPerPeriod 設定の値を増やします。SamplesPerPeriod の設定の詳細については、以下を参照してください。