Main Content

spectrum

時系列モデルの出力パワー スペクトルまたは線形入出力モデルの外乱スペクトルをプロットするか返す

説明

結果のプロット

spectrum(sys) は、同定された時系列モデル sys の出力パワー スペクトルまたは同定された入出力モデル sys の外乱スペクトルをプロットします。関数は、周波数範囲と点数を自動的に選択します。

  • sys が時系列モデルの場合は、sys は次のようなシステムを表します。

    y(t)=He(t)

    ここで、e(t) はガウス ホワイト ノイズであり、y(t) は観測された出力です。

    spectrum は、e(t) の分散とサンプル時間でスケーリングして、|H'H| をプロットします。

  • sys が入出力モデルの場合、sys は次のシステムを表します。

    y(t)=Gu(t)+He(t)

    ここで、u(t) は測定された入力であり、e(t) はガウス ホワイト ノイズであり、y(t) は観測された出力です。

    この場合、spectrum は外乱成分 He(t) のスペクトルをプロットします。

サンプル時間が Ts の離散時間モデルでは、spectrum は変換 z=ejωTs を使用して単位円を実数の周波数軸にマッピングします。関数は、ナイキスト周波数 π/Ts より小さい周波数のスペクトルのみをプロットし、Ts が指定されていない場合は既定値の 1 時間単位を使用します。

spectrum(sys,{wmin, wmax}) は、wmin から wmax の範囲の周波数のスペクトル プロットを作成します。

spectrum(sys,w) は、ベクトル w で指定した周波数を使用してスペクトル プロットを作成します。

spectrum(sys1,...,sysN,w) は、単一のプロット上に複数の同定されたモデルのスペクトル プロットを作成します。w 引数はオプションです。

各モデルに対して、色、ライン スタイル、およびマーカーを指定することができます。たとえば、spectrum(sys1,'r',sys2,'y--',sys3,'gx') の場合、sys1 に赤色、sys2 に黄色のダッシュ マーカー、sys3 に緑色の x マーカーを使用します。

結果を返す

ps = spectrum(sys,w) は、指定した周波数 w について sys のパワー スペクトル振幅を返します。この構文はスペクトルをプロットしません。

[ps,wout] = spectrum(sys) は、出力パワー スペクトルの計算対象の周波数ベクトル wout を返します。

[ps,wout,sdps] = spectrum(sys) は、パワー スペクトルの推定標準偏差を返します。

すべて折りたたむ

時系列推定データを読み込みます。

load iddata9 z9

最小二乗法を使用して 4 次 AR モデルを推定します。

sys = ar(z9,4,'ls');

モデルの出力スペクトルをプロットします。

spectrum(sys);

Figure contains an axes object. The axes object with title From: e@y1 To: y1, ylabel Power (dB) contains an object of type line. This object represents sys.

プロットの表示オプションを変更するには、プロットを右クリックしてコンテキスト メニューにアクセスします。以下に例を示します。

  • シミュレートした応答の信頼領域を表示するには、[特性][信頼領域] を選択します。

  • プロットする標準偏差の数を指定するには、[プロパティ] を選択します。次に、プロパティ エディターで [オプション] タブを選択し、[表示する標準偏差の数] に標準偏差の数を指定します。既定値は 1 標準偏差です。

推定データを読み込みます。

load iddata1 z1;

単入力単出力の状態空間モデルを推定します。

sys = n4sid(z1,2);

モデルのノイズ スペクトルをプロットします。0.1 ~ 50 rad/s の周波数範囲を指定します。

spectrum(sys,{0.1,50});

Figure contains an axes object. The axes object with title From: e@y1 To: y1, ylabel Power (dB) contains an object of type line. This object represents sys.

関数はスペクトルをプロットしますが、周波数範囲を約 31.4 rad/s のナイキスト周波数に制限します。

各正弦波が完全な周波数範囲に拡散された、5 つの正弦波の合計で構成される入力を作成します。この信号のスペクトルをその平方のスペクトルと比較します。

各周期に 100 個のサンプルが含まれた、20 周期にまたがる正弦波の合計の入力を作成します。ランダム位相の 5 つの正弦波を信号で結合するように指定します。その際、10 回の試行によって信号の拡散が最小のセットを求めます。このステップの詳細については、idinput を参照してください。

u = idinput([100 1 20],'sine',[],[],[5 10 1]);

入力 u が含まれ、周期が 100 である、入力のみの iddata オブジェクトの u を作成します。

u = iddata([],u,1,'per',100);

入力値を二乗して新しい iddata オブジェクトの u2 に格納します。

u2 = u.u.^2;
u2 = iddata([],u2,1,'per',100);

etfe を使用して、u および u2 から経験的な伝達関数モデルを推定します。これらのモデルのパワー スペクトルを一緒にプロットします。さまざまなマーカーの色とタイプを使用して、スペクトルのソースを区別します。

spectrum(etfe(u),'r*',etfe(u2),'+')

Figure contains an axes object. The axes object with title From: e@u1 To: u1, ylabel Power (dB) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent untitled1, untitled2.

プロットでは、一部の周波数が分割されていることが示されています。u2 ベースのスペクトルが u ベースのスペクトルと一致しておらず、特定の u ベースの点の側に 2 つのスペクトル点があるところがあります。この分割は、二乗したシステムの非線形性を示しています。

入力引数

すべて折りたたむ

同定されたモデル。idpoly オブジェクト、idproc オブジェクト、idss オブジェクト、または idtf オブジェクトとして指定します。

  • sys が時系列モデルの場合は、sys は次のようなシステムを表します。

    y(t)=He(t)

    ここで、e(t) はガウス ホワイト ノイズであり、y(t) は観測された出力です。

  • sys が入出力モデルの場合は、sys は次のシステムを表します。

    y(t)=Gu(t)+He(t)

    ここで、u(t) は測定された入力であり、e(t) はガウス ホワイト ノイズであり、y(t) は観測された出力です。

スペクトルをプロットする周波数範囲の最小周波数。正の数値として指定します。

rad/TimeUnit 単位で wmin を指定します。ここで、TimeUnitsys.TimeUnit です。

wmin の指定例については、同定された SISO 線形モデルのノイズ スペクトルのプロットを参照してください。

スペクトルをプロットする周波数範囲の最大周波数。正の数値として指定します。既定では、関数は sys のナイキスト周波数を wmax として使用します。

rad/TimeUnit 単位で wmax を指定します。ここで、TimeUnitsys.TimeUnit です。ナイキスト周波数より大きい wmax を指定した場合、spectrum は代わりにナイキスト周波数を使用します。

wmax の指定例については、同定された SISO 線形モデルのノイズ スペクトルのプロットを参照してください。

スペクトルをプロットする周波数。正の数値のベクトルとして指定します。

rad/TimeUnit 単位で w を指定します。ここで、TimeUnitsys.TimeUnit です。

出力引数

すべて折りたたむ

パワー スペクトルの振幅。数値ベクトルまたは数値配列として返されます。

  • 単出力モデルでは、ps は 1×1×Nw の配列です。ここで、Nw は周波数ベクトルの長さです。

  • 多出力モデルでは、ps は Ny×Ny×Nw の配列です。ここで、Ny は出力数です。ps(:,:,k)w(k) における周波数のパワー スペクトルに対応しています。

dB の振幅値については、「psdb = 10*log10(ps)」と入力します。

スペクトルがプロットされた周波数。rad/TimeUnit 単位の数値ベクトルとして返されます。ここで、TimeUnitsys.TimeUnit です。入力引数として w を指定した場合は、関数は wout で同一のベクトルを返します。

パワー スペクトルの推定標準偏差。ps と同じ次元の配列として返されます。

バージョン履歴

R2012a で導入