時間領域と周波数領域間のデータの変換
System Identification Toolbox™ には、時間領域と周波数領域の両方でデータの解析を行うツールと、モデルの推定と評価を行うツールが用意されています。測定データと同じ領域にないツールとメソッドを使用するために、時間領域と周波数領域間でデータを変換できます。
iddata オブジェクトには時間領域データまたは周波数領域データが格納されます。
"時間領域" データは、時間の関数としてサンプリングされた 1 つ以上の入力変数 u(t) と、1 つ以上の出力変数 y(t) で構成されます。
"周波数領域" データは、変換された入力時間領域信号および出力時間領域信号、または独立した可変周波数の関数としてサンプリングされたシステム周波数応答のいずれかで構成されます。
MATLAB® で時間領域データと周波数領域データを表現する方法の詳細については、Representing Data in MATLAB Workspaceを参照してください。
データは 1 つの領域から別の領域に変換できます。次の表に、時間領域と周波数領域間でデータを変換するコマンドをまとめます。コマンドの詳細については、対応するコマンドのリファレンス ページを参照してください。
| コマンド | 説明 | 構文の例 |
|---|---|---|
fft | 時間領域データを周波数領域に変換します。 周波数値の数として | 時間領域 f_data = fft(t_data,N) |
ifft | 周波数領域データを時間領域に変換します。周波数は線形で等間隔です。 | 周波数領域 t_data = ifft(f_data) |
iddata データを idfrd 周波数応答の形式に変換するのは、推定の一種です。iddata オブジェクトを使用して周波数応答を推定する場合は、Transforming Between Frequency-Domain and Frequency-Response Dataを参照してください。
時間領域と周波数領域間のデータの変換
時間領域から周波数領域にデータを変換し、時間領域に戻して、元のデータと変換後のデータから推定されたモデルのパフォーマンスを比較します。
300 のサンプルが含まれる時間領域データ z1 を読み込んでプロットします。
load iddata1 z1 plot(z1)

z1 のサンプル時間 Ts を求めます。
Ts = z1.Ts
Ts = 0.1000
サンプル時間は 0.1 秒です。
z1 を周波数領域に変換します。
z1f = fft(z1)
z1f =
Frequency domain data set with responses at 151 frequencies.
Frequency range: 0 to 31.416 rad/seconds
Sample time: 0.1 seconds
Outputs Unit (if specified)
y1
Inputs Unit (if specified)
u1
Data Properties
周波数範囲は、pi/Ts のナイキスト周波数と同じ 31.416 rad/s に拡張されます。
周波数領域データをプロットします。
plot(z1f)

z1f を元の時間領域に変換して、2 つの時間領域信号をまとめてプロットします。
z1t = ifft(z1f)
z1t =
Time domain data set with 300 samples.
Sample time: 0.1 seconds
Outputs Unit (if specified)
y1
Inputs Unit (if specified)
u1
Data Properties
plot(z1t,z1)

信号は正確に整列します。
z1 と z1t の 2 次状態空間モデルを推定します。
sys1 = ssest(z1,2); sys1t = ssest(z1t,2); compare(z1,sys1,sys1t)

z1f の状態空間モデルを推定します。
sys1f = ssest(z1f,2); compare(z1f,sys1f)

時間領域モデルと周波数領域モデルの適合割合は似ています。
参考
fft | iddata | ifft | etfe | spa | spafdr