Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

frest.Sinestream

一連の正弦波を含む入力信号

説明

frest.Sinestream オブジェクトを使用して、周波数応答推定の sinestream 入力信号を表します。こうした信号は順次適用される可変周波数の正弦波で構成されます。各周波数は、一定期間、システムを励起します。

sinestream 信号は、ほとんどの状況で推奨されます。システムの非線形性が強い場合や、非常に正確な周波数応答モデルが必要な場合には特に便利です。sinestream 入力を使用して得られる周波数応答モデルには、sinestream 信号のすべての周波数が含まれています。

推定のための sinestream 入力信号は、コマンド ライン、モデル線形化器、または Frequency Response Estimator ブロックで使用できます。推定アルゴリズムは、推定用に指定された入力ポイントに sinestream 信号を挿入し、出力ポイントで応答を測定します。詳細については、sinestream 入力信号を参照してください。

入力信号のプロットを表示するには、plot(input) と入力します。入力信号用の timeseries オブジェクトを作成するには、generateTimeseries コマンドを使用します。

作成

sinestream 信号を次のいずれかの方法で作成できます。

  • 連続時間信号に対して関数 frest.Sinestream を使用する

  • 離散時間信号に対して関数 frest.createFixedTsSinestream を使用する

詳細については、sinestream 入力信号を参照してください。

説明

input = frest.Sinestream(sys) は、線形システム sys のダイナミクスに基づいたプロパティをもつ一連の正弦波を使用して信号を作成します。たとえば、システムの正確な線形化がある場合は、それを使用してパラメーターを初期化することができます。

input = frest.Sinestream(Name,Value) は、1 つ以上の名前と値のペアを使って指定されたプロパティをもつ一連の正弦波を使用して信号を作成します。各プロパティ名を引用符で囲みます。

入力引数

すべて展開する

線形動的システム。SISO の ss オブジェクト、tf オブジェクト、または zpk オブジェクトとして指定します。非線形システムを線形化することで、既知のダイナミクスを指定するか、線形モデルを取得することができます。

結果の frest.Sinestream オブジェクトでは、線形システムに基づいて次のプロパティが自動的に設定されます。

  • Frequency には、線形システムに興味深いダイナミクスがある周波数が含まれています。

  • SettlingPeriods は、Frequency の各周波数でシステムが定常状態に到達するためにかかる周期数です。

  • NumPeriods は (3 + SettlingPeriods) であり、少なくとも 3 周期の間、必ず最大振幅で各周波数によりシステムを励起するようにします。

  • 離散システムの場合のみ、SamplesPerPeriod は、すべての周波数が線形システムと同じサンプル時間をもつように設定されます。

残りのプロパティでは既定値が使用されます。

プロパティ

すべて展開する

信号の周波数。FreqUnits で指定された単位の周波数値のベクトルとして指定します。

各周波数における信号の振幅。次のいずれかとして指定します。

  • スカラー — すべての周波数を同じ振幅に設定する。

  • Frequency と同じ長さをもつベクトル — 各周波数の振幅を異なる値に設定する。

各周波数の 1 周期のサンプル数。次のいずれかとして指定します。

  • スカラー — すべての周波数において、周期ごとに同じ数のサンプルを使用する。

  • Frequency と同じ長さをもつベクトル — 周波数ごとに異なるサンプル数を使用する。

周波数単位。以下のいずれかとして指定。

  • 'rad/s' — ラジアン/秒

  • 'Hz' — ヘルツ

各正弦波の振幅をその最大値に引き上げるための周期の数。次のいずれかとして指定します。

  • スカラー — すべての周波数に対して同じ立ち上がり周期数を使用する。

  • Frequency と同じ長さをもつベクトル — 周波数ごとに異なる立ち上がり周期数を使用する。

RampUpPeriods を使用して、各正弦波の振幅をその最大値まで線形に増加させる周期数を指定します。このオプションを指定することで、入力の振幅が変化したときに応答が必ず滑らかになります。

frestimate は、立ち上がり周期中に収集された応答データを破棄します。

各正弦波が最大振幅である周期の数。次のいずれかとして指定します。

  • スカラー — すべての周波数に対して同じ周期数を使用する。

  • Frequency と同じ長さをもつベクトル — 周波数ごとに異なる周期数を使用する。

指定された周期数には整定周期 (SettlingPeriods) と推定に使用される周期が含まれています。

システムが定常状態に達するまでの周期数。次のいずれかとして指定します。

  • スカラー — すべての周波数に同数の整定周期を使用する。

  • Frequency と同じ長さをもつベクトル — 周波数ごとに異なる数の整定周期を使用する。

frestimate は整定周期内で収集された応答データを破棄します。

frestimate を使用して推定する前に、入力信号の周波数選択性 FIR フィルター処理を適用するフラグ。次のいずれかとして指定します。

  • 'on' — 入力信号をフィルター処理する。フィルター処理を使用する場合、frestimate は推定前の整定周期後に追加の 1 周期分の応答データを破棄します。

  • 'off' — 入力信号をフィルター処理しない。

シミュレーション中に個々の入力信号の周波数が Simulink® モデルに挿入される順序。次のいずれかとして指定します。

  • 'Sequential'frestimate は、可変サンプル時間を使用して、単一の Simulink シミュレーションのモデルに 1 つの周波数から次の周波数へと順に入力します。このオプションを使用するには、モデルで可変ステップ ソルバーが使用されていなければなりません。

  • 'OneAtATime'frestimate はモデルの個別の Simulink シミュレーション中に、各周波数を入力します。各シミュレーションの前に、frestimate は、推定のために指定された操作点へモデルを初期化します。Parallel Computing Toolbox™ ソフトウェアをお持ちの場合は、これらのシミュレーションを並列実行して、推定を高速化することができます。詳細については、並列計算を使用した推定の高速化を参照してください。

オブジェクト関数

frestimateSimulink モデルの周波数応答の推定
generateTimeseries入力信号の時間領域データの生成
frest.simCompare非線形および線形モデルの時間領域シミュレーションのプロット
frest.simView周波数応答モデルの時間領域および周波数領域でのプロット
getSimulationTime周波数応答推定のシミュレーションの最終時間

すべて折りたたむ

信号の周波数を指定することにより、推定のための sinestream 入力信号を作成します。また、振幅、立ち上がり周期数、整定周期数、および立ち上がり後の合計周期数も指定します。

周波数を指定するには、周波数のベクトルを使用します。

freqs = linspace(1,4,4);

他のパラメーターを指定する場合、すべての周波数で同じパラメーター値を使用するにはスカラーを使用します。周波数ごとに異なる値を使用するには、freqs と同じ長さのベクトルを使用します。この例では、各周波数で増加する振幅を使用しますが、立ち上がり周期数、整定周期数、および立ち上がり後の合計周期数は定数にします。

amps = [1 1.5 1.75 2];
ramp = 2;
settle = 3;
pds = 5;

input = frest.Sinestream('Frequency',freqs,...
                         'Amplitude',amps,...
                         'RampPeriods',ramp,...
                         'SettlingPeriods',settle,...
                         'NumPeriods',pds);

結果の sinestream 信号を調べます。

plot(input)

sinestream 信号が広い範囲の周波数をカバーする場合、すべての周波数に同じサンプル時間を使用するのは効率的でないことがあります。そのため、frest.Sinestream は既定で固定数のサンプルを各周波数ごとに使用します。その数をスカラー値を使って指定するか、あるいはベクトルを使用して周波数ごとに異なる数のサンプルを提供することができます (信号全体でサンプル時間を固定した sinestream 信号を作成するには、frest.createFixedTsSinestreamを使用します。このオプションは、推定のための入力線形化ポイントが離散時間信号上にある場合に便利です)。

次の特性の正弦波入力信号を作成します。

  • 10 ~ 1000 Hz の対数的に等間隔な 50 個の周波数

  • すべての周波数で 1e-3 の振幅

  • 信号の周波数の 10 倍の周波数のサンプル (つまり、周期あたり 10 サンプル)

input = frest.Sinestream('Amplitude',1e-3,...
                         'Frequency',logspace(1,3,50),...
                         'SamplesPerPeriod',10,...
                         'FreqUnits','Hz');

線形システムのダイナミクスに基づいた sinestream 入力信号を作成します。この方法は、周波数応答の推定を使ってモデルの線形化を検証する場合に便利です。

Simulink モデルを開きます。

model = 'watertank';
open_system(model)

この例では、モデルを定常状態の操作点で線形化して、sinestream 信号の初期化に使用できる状態空間モデルを取得します。

io(1)=linio('watertank/PID Controller',1,'input');
io(2)=linio('watertank/Water-Tank System',1,'openoutput');

watertank_spec = operspec(model);
opOpts = findopOptions('DisplayReport','off');
op = findop(model,watertank_spec,opOpts);

sys = linearize(model,op,io);

sinestream 信号を作成します。

input = frest.Sinestream(sys);

frest.Sinestream は、システム ダイナミクスに基づいて周波数を選択します。また、sinestream 信号の他のパラメーターを自動的に初期化します。

input
 
The sinestream input signal:
 
      Frequency           : [0.0015811;0.0026375;0.0043996;0.007339 ...] (rad/s)
      Amplitude           : 1e-05
      SamplesPerPeriod    : 40
      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
 

ドット表記を使用して信号のプロパティを変更できます。たとえば、信号振幅を大きくします。

input.Amplitude = 3e-5
 
The sinestream input signal:
 
      Frequency           : [0.0015811;0.0026375;0.0043996;0.007339 ...] (rad/s)
      Amplitude           : 3e-05
      SamplesPerPeriod    : 40
      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
 

代替機能

モデル線形化器

モデル線形化器で、sinestream 入力信号を推定に使用するには、[推定] タブで次を選択します。

  • I/O のサンプル時間が連続の場合、[入力信号][Sinestream]

  • I/O のサンプル時間が離散の場合、[入力信号][固定サンプル時間 Sinestream]

R2009b で導入