最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

impulse

動的システムのインパルス応答プロット、インパルス応答データ

構文

impulse(sys)
impulse(sys,Tfinal)
impulse(sys,t)
impulse(sys1,sys2,...,sysN)
impulse(sys1,sys2,...,sysN,Tfinal)
impulse(sys1,sys2,...,sysN,t)
[y,t] = impulse(sys)
[y,t] = impulse(sys,Tfinal)
y = impulse(sys,t)
[y,t,x] = impulse(sys)
[y,t,x,ysd] = impulse(sys)

説明

impulse動的システム モデルの単位インパルス応答を計算します。連続時間動的システムでは、インパルス応答は Dirac 入力 δ(t) になります。離散時間システムの場合、インパルス応答は長さが Ts で高さが 1/Ts の単位領域パルスに対する応答となります。ここで、Ts はシステムのサンプル時間です (このパルスは Ts がゼロに近づくにつれて δ(t) に近づきます。)状態空間モデルでは、impulse は初期状態値をゼロと想定します。

impulse(sys) は動的システム モデル sys のインパルス応答をプロットします。このモデルは、連続または離散、SISO または MIMO のいずれでも可能です。多入力システムのインパルス応答は、各入力チャネルのインパルス応答の集まりです。応答の過渡的振る舞いを表示するシミュレーション区間は自動的に決定されます。

impulse(sys,Tfinal) は、t = 0 から最終時間 t = Tfinal までのインパルス応答をシミュレーションします。システム時間単位で Tfinal を表し、sysTimeUnit プロパティで指定されます。サンプル時間を指定しない離散時間システム (Ts = -1) では、impulseTfinal を、シミュレートするサンプリング周期の数として解釈します。

impulse(sys,t) は、シミュレーションのためにユーザーが指定した時間ベクトル t を使用します。システム時間単位で t を表し、sysTimeUnit プロパティで指定されます。離散時間モデルでは、tTi:Ts:Tf の形式です。ここで、Ts はサンプル時間です。連続時間モデルに対して、tTi:dt:Tf の形式で与え、ここで、dt は連続システムに対する離散近似のサンプル時間になります (アルゴリズムを参照してください)。impulse コマンドは、Ti に関係なく、常に t=0 でインパルスを適用します。

1 つの図で複数のモデル sys1,..., sysN のインパルス応答をプロットするには、次の構文を使用します。

impulse(sys1,sys2,...,sysN)

impulse(sys1,sys2,...,sysN,Tfinal)

impulse(sys1,sys2,...,sysN,t)

bodeplot と同様、次の例に示すように各システムに特定の色、ラインスタイル、マーカーを指定できます。

impulse(sys1,'y:',sys2,'g--')

詳細については、「マルチシステムのプロットと比較」および本節の bode エントリを参照してください。

出力引数付きで呼び出された場合:

[y,t] = impulse(sys)

[y,t] = impulse(sys,Tfinal)

y = impulse(sys,t)

impulse は、シミュレーションに使用された出力応答 y と時間ベクトル t を返します (インパルスに対する引数として提供されていない場合)。画面上には、何もプロットされません。単入力システムの場合、y には時間サンプルと同じ数の行 (t の長さ) および出力と同じ数の列があります。多入力の場合、各入力チャネルのインパルス応答は y の 3 次元に沿って積み上げられます。y の次元は、

状態空間モデルのみの場合は、以下のとおりです。

[y,t,x] = impulse(sys)

(t の長さ) x (出力数) x (入力数)

になり、y(:,:,j)j 番目の入力チャネルに入るインパルス入力に対する応答を与えます。同様に、x の次元は次のようになります。

(t の長さ) x (状態数) x (入力数)

[y,t,x,ysd] = impulse(sys) は、同定されたシステム SYS の応答 Y の標準偏差 YSD を返します。SYS にパラメーター共分散情報が含まれていない場合、YSD は空になります。

2 次状態空間モデルのインパルス応答プロット

2 次状態空間モデルのインパルス応答のプロット

[x˙1x˙2]=[0.55720.78140.78140][x1x2]+[1102][u1u2]y=[1.96916.4493][x1x2]

a = [-0.5572 -0.7814;0.7814  0];
b = [1 -1;0 2];
c = [1.9691  6.4493];
sys = ss(a,b,c,0);
impulse(sys)

左のプロットには最初の入力チャネルのインパルス応答が表示され、右のプロットには 2 番目の入力チャネルのインパルス応答が表示されます。

インパルス応答データは次のようにして MATLAB® 配列に保存できます。

[y,t] = impulse(sys);

このシステムには 2 つの入力があるため、y は次の次元の 3 D 配列になります

size(y)
ans = 1×3

   139     1     2

(最初の次元は t の長さです)。最初の入力チャネルのインパルス応答には、次のようにアクセスします。

ch1 = y(:,:,1);
size(ch1)
ans = 1×2

   139     1

同定されたシステムからのインパルス データ

同定された線形システムのインパルス応答と、対応する 1 標準不確かさを取得します。

load(fullfile(matlabroot, 'toolbox', 'ident', 'iddemos', 'data', 'dcmotordata'));
z = iddata(y, u, 0.1, 'Name', 'DC-motor');
set(z, 'InputName', 'Voltage', 'InputUnit', 'V');
set(z, 'OutputName', {'Angular position', 'Angular velocity'});
set(z, 'OutputUnit', {'rad', 'rad/s'});
set(z, 'Tstart', 0, 'TimeUnit', 's');

model = tfest(z,2);
[y,t,~,ysd] = impulse(model,2);

% Plot 3 std uncertainty
subplot(211)
plot(t,y(:,1), t,y(:,1)+3*ysd(:,1),'k:', t,y(:,1)-3*ysd(:,1),'k:')
subplot(212)
plot(t,y(:,2), t,y(:,2)+3*ysd(:,2),'k:', t,y(:,2)-3*ysd(:,2),'k:')

制限

ゼロでない行列 D の連続システムのインパルス応答は t = 0 で無限になります。impulse はこの不連続を無視し、t = 0 におけるより低い連続値 Cb を返します。

ヒント

単位などのプロットのプロパティを変更することができます。プロットのプロパティの変更方法の詳細は、プロットをカスタマイズする方法を参照してください。

アルゴリズム

連続時間モデルは最初に状態空間に変換されます。単入力状態空間モデルのインパルス応答

x˙=Ax+buy=Cx

は初期状態が b の自由応答と等価です。

x˙=Ax,x(0)=by=Cx

この応答をシミュレーションするため、システムは入力にゼロ次ホールドを使用して離散化されます。サンプル時間は、時間ベクトル t = 0:dt:Tf が提供されている場合 (その場合は dt をサンプル時間として使用) を除き、システム ダイナミクスに基づいて自動的に選択されます。

R2006a より前に導入