Main Content

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

cra

相関解析の前に入出力データの前置白色化を使用してインパルス応答を推定する

説明

cra コマンドは、まずデータを前置白色化してから共分散関数および相互相関関数を計算して、時間領域データから単入力、単出力のインパルス応答を推定します。cra の代替方法は impulseest です。これは、高次の FIR モデルを使用してインパルス応答を推定し、より優れた結果が返されることがあります。impulseest は MIMO データも処理します。

ir=cra(data) は、時間領域データ data の SISO インパルス応答を推定します。このデータは、timetable、数値行列のコンマ区切りペア、あるいは iddata オブジェクトの形式にすることができます。

cra は、まずデータを前置白色化する自己回帰モデルを推定し、前置白色化後に入力データと出力データ間の相互相関関数を計算およびスケーリングして、インパルス応答を推定します。計算シーケンスの詳細については、アルゴリズムを参照してください。

data が 2 つを超える変数を含む timetable の場合、名前と値の引数 InputName および OutputName でチャネル名を指定して、推定で使用する単一の入力チャネルと単一の出力チャネルを選択する必要があります。また、data に含まれている変数が 2 つだけであるが、出力データが 2 番目の変数ではなく最初の変数に含まれている場合にも OutputName 引数を使用する必要があります。

ir=cra(data,M) は、共分散および相関関数を計算するラグの数を指定します。

ir=cra(data,M,na) は、入力データを近似する自己回帰モデルの次数を指定します。

ir=cra(data,M,na,plot) はプロット表示制御を指定します。

[ir,R,cl] = cra(___) は、R で相関/共分散情報、cl でインパルス応答の 99% 信頼度を返します。この構文では、前述の任意の入力引数の組み合わせで使用できます。

sys = cra(___,Name,Value) は、1 つ以上の名前と値の引数で指定された追加のモデル オプションを使用します。

たとえば、sys = cra(data,'InputName',"u1",'OutputName',"y1") を使用して入出力信号変数名を指定します。

この構文では、前述の任意の入力引数の組み合わせで使用できます。

すべて折りたたむ

2 次 ARX モデルのインパルス応答を、相関解析で取得されたインパルス応答と比較します。

load iddata1
z = z1;
ir = cra(z);
m = arx(z,[2 2 1]);
imp = [1;zeros(20,1)];
irth = sim(m,imp);
subplot(211)
plot([ir irth])
title('Impulse Responses')
subplot(212)
plot([cumsum(ir),cumsum(irth)])
title('Step Responses')

入力引数

すべて折りたたむ

単一の実験の等間隔にサンプリングされた推定データ。SISO timetable、コンマ区切りの行列ペア、またはデータ オブジェクトとして指定します。

timetable

一定間隔の時間ベクトルを使用する timetable として data を指定します。data には入力チャネルと出力チャネルを表す複数の変数を含めることができます。ただし、cra で推定する場合には単一の入力および出力チャネルを選択する必要があります。名前と値の引数 InputName および OutputName を使用して、使用する入出力を指定します。

コンマ区切りの行列ペア

等間隔にサンプリングされた入出力の時間領域の信号値が含まれた、長さ Ns の単一列の行列 u,y のコンマ区切りのペアとして data を指定します。ここで、Ns はサンプルの数です。

行列ベースのデータはサンプル時間情報を提供しません。サンプル時間は 1 秒と仮定されます。

データ オブジェクト

等間隔にサンプリングされた入力値と出力値を含む iddata オブジェクトとして data を指定します。データ オブジェクトには、単入力単出力実験の単一実験時間領域データが含まれていなければなりません。多変量の場合、cra を一度に 2 つの信号に反復的に適用するか、impulseest を使用します。

推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

共分散/相関関数が計算されるラグの数。正の整数として指定します。これらの関数は -MM で計算されるため、R の長さは 2M+1 です。インパルス応答は、0M で計算されます。

入力が近似される AR モデルの次数。正の整数または 0 として指定します。

  • データの前置白色化を指定するには、na を AR モデルの目的の次数に設定します。

  • 元のデータ シーケンスの共分散関数と相関関数を取得するには、na を 0 に設定します。

プロット表示制御。1、2、または 0 として指定します。各値は次の表示オプションになります。

  • 1 — 推定されたインパルス応答を 99% 信頼領域とともにプロットする。

  • 2 — すべての共分散関数をプロットする。

  • 0 — プロットを表示しない。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

例: sys = cra(data,InputName="u2") は入力変数として timetable 変数 u2 を指定します。また、sys = cra('InputName',"u2") を使用することもできます。

入力チャネル名。string または文字ベクトルとして指定します。

データ ソースに timetable を使用している場合は、InputName の名前は timetable 変数のサブセットでなければなりません。

例: sys = cra(data,__,'InputName', "u2") は、推定で使用する timetable data からの入力チャネルとして変数 u2 を選択します。

出力チャネル名。string または文字ベクトルとして指定します。

データ ソースに timetable を使用している場合は、OutputName の名前は timetable 変数のサブセットでなければなりません。

例: sys = cra(data,__,'OutputName',"y3") は、推定で使用する timetable data からの出力チャネルとして変数 y3 を選択します。

出力引数

すべて折りたたむ

推定インパルス応答。M で指定したラグの数に等しい長さをもつ列ベクトルとして返されます。ir の最初のエントリはラグ 0 に対応します。負のラグは ir で除外されます。

共分散および相関の情報。以下の列に示された情報を含む (2M+1) 行 4 列の行列として返されます。

  1. ラグ インデックス

  2. 出力の共分散関数

  3. 入力の共分散関数

  4. 相関関数

R がベースとして使用する入出力データは元の入出力データまたは前置白色化されたデータにすることができ、na の値で指定します。

コマンド cra(R) を使用して関数プロットを再表示できます。

インパルス応答の 99% 有意水準。数値スカラーとして返されます。

アルゴリズム

cra コマンドは以下の手順を実行してインパルス応答を推定します。

  1. 入力 u の自己回帰モデルを A(q)u(t)=e(t) として計算します。e は無相関の (ホワイト) ノイズ、q は時間シフト演算子、A(q) は次数 na の多項式です。

  2. u と出力 y をともに A(q) でフィルター処理して、前置白色化されたデータを取得します。

  3. 前置白色化された u および y データの共分散関数とそれらの間の相互相関関数を計算します。

  4. 99% の信頼度で関数をプロットします。

  5. 高さ 1/T、期間 T のインパルスに対応するように相関関数をスケーリングします。ここで、T はデータのサンプル時間であり、スケーリングされた関数がシステム インパルス応答の推定を表します。ir 出力引数でこの関数を返します。

ラグ変数の正の値は u から y の後の値への影響に相当します。言い換えれば、負のラグの有意な相関は、データ内の y から u へのフィードバックを示しています。インパルス応答 ir の最初のエントリはラグ 0 に対応します。ir は負のラグを除外します。

バージョン履歴

R2006a より前に導入

すべて展開する