Main Content

impulse

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

    説明

    インパルス応答プロット

    impulse(sys) は、単位振幅のインパルス入力に対する動的システム モデルの応答をプロットします。モデル sys は、連続時間または離散時間、および SISO または MIMO のいずれかにすることができます。MIMO システムでは、プロットに各 I/O チャネルのインパルス応答が表示されます。impulse は、システム ダイナミクスに基づいてシミュレーションのタイム ステップと期間を自動的に決定します。

    impulse(sys,tFinal) は、t = 0 から最終時間 t = tFinal までのインパルス応答をシミュレートします。この関数はシステム ダイナミクスを使用して、介在するタイム ステップを確認します。

    impulse(sys,t) は、ベクトル t で指定した時間におけるインパルス応答をプロットします。

    impulse(sys1,sys2,...,sysN,___) は、複数の動的システムのインパルス応答を同じプロット上にプロットします。すべてのシステムは入力数と出力数が同じでなければなりません。この構文では、前述の任意の入力引数の組み合わせで複数の動的システムが使用できます。

    impulse(sys1,LineSpec1,...,sysN,LineSpecN,___) は、プロット内の各システムの色、ライン スタイル、およびマーカーを指定します。前述の任意の入力引数の組み合わせで LineSpec を使用できます。追加のプロット カスタマイズ オプションが必要な場合は、代わりに impulseplot を使用してください。

    インパルス応答データ

    y = impulse(sys,t) は、ベクトル t で指定された時間における動的システム モデル sys のインパルス応答を返します。この構文はプロットを描画しません。

    [y,tOut] = impulse(sys) は、y の応答に対応する時間 tOut のベクトルも返します。時間の入力ベクトル t を指定しない場合、impulse はシステム ダイナミクスに基づいて tOut の長さとタイム ステップを選択します。

    [y,tOut] = impulse(sys,tFinal) は、終了時間 tFinal までのインパルス応答を計算します。impulse は、システム ダイナミクスに基づいて tOut のタイム ステップを選択します。

    [y,t,x] = impulse(sys) は、sysss モデルや idss モデルなどの状態空間モデルである場合、状態軌跡 x も返します。

    [y,t,x,ysd] = impulse(sys) は、sysidssidtf、または idnlarx のモデルなど、同定されたモデルである場合、インパルス応答 y の標準偏差 ysd も計算します。

    すべて折りたたむ

    以下の伝達関数で表される連続時間システムのインパルス応答をプロットします。

    sys(s)=4s2+2s+10

    この例では、伝達関数を表す tf モデルを作成します。零点-極-ゲイン (zpk) モデルや状態空間 (ss) モデルなど、他の動的システム モデル タイプのインパルス応答を同様にプロットできます。

    sys = tf(4,[1 2 10]);

    インパルス応答をプロットします。

    impulse(sys)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    impulse プロットには、定常状態の応答を示す水平の点線が自動的に含まれます。MATLAB® Figure ウィンドウでプロットを右クリックして、ピーク応答や過渡時間など、インパルス応答の他の特性を表示できます。

    離散時間システムのインパルス応答をプロットします。システムは 0.2 秒のサンプル時間をもち、次の状態空間行列で表されます。

    A = [1.6 -0.7;
          1  0];
    B = [0.5; 0];
    C = [0.1 0.1];
    D = 0;

    状態空間モデルを作成し、そのインパルス応答をプロットします。

    sys = ss(A,B,C,D,0.2);
    impulse(sys)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    インパルス応答にはモデルの離散化が反映され、0.2 秒ごとに計算される応答が表示されます。

    次の零点-極-ゲイン モデルのインパルス応答を調べます。

    sys = zpk(-1,[-0.2+3j,-0.2-3j],1) * tf([1 1],[1 0.05]) 
    sys =
     
                (s+1)^2
      ----------------------------
      (s+0.05) (s^2 + 0.4s + 9.04)
     
    Continuous-time zero/pole/gain model.
    
    impulse(sys)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    impulse は既定で、応答の向かいつつある定常状態を示す終了時間を選択します。過渡応答を詳しく調べるには、インパルス プロットを t = 20 秒に制限します。

    impulse(sys,20)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    あるいは、インパルス応答を調べる時間が一定間隔で区切られている場合は、正確な時間を指定することができます。たとえば、過渡状態の終わりからシステムが定常状態に到達するまでの応答を調べます。

    t = 20:0.2:120;
    impulse(sys,t)

    Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

    このプロットは t = 20 で開始されますが、impulse は常にインパルス入力を t = 0 で適用します。

    以下の 2 次状態空間モデルについて考えます。

    [x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]+[1-102][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);

    このモデルには 2 つの入力と 1 つの出力があるため、最初の入力から出力へと、2 番目の入力から出力への 2 つのチャネルがあります。各チャネルには固有のインパルス応答があります。

    impulse を使用すると、すべてのチャネル応答が計算されます。

    impulse(sys)

    Figure contains 2 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents sys. Axes object 2 with title From: In(2) contains an object of type line. This object represents sys.

    左のプロットには最初の入力チャネルのインパルス応答が表示され、右のプロットには 2 番目の入力チャネルのインパルス応答が表示されます。impulse を使用して MIMO モデルの応答をプロットするたびに、モデルのすべての I/O チャネルを表すプロットの配列が生成されます。たとえば、5 つの状態、3 つの入力、および 2 つの出力をもつランダム状態空間モデルを作成し、そのインパルス応答をプロットします。

    sys = rss(5,2,3);
    impulse(sys)

    Figure contains 6 axes objects. Axes object 1 with title From: In(1) contains an object of type line. This object represents sys. Axes object 2 contains an object of type line. This object represents sys. Axes object 3 with title From: In(2) contains an object of type line. This object represents sys. Axes object 4 contains an object of type line. This object represents sys. Axes object 5 with title From: In(3) contains an object of type line. This object represents sys. Axes object 6 contains an object of type line. This object represents sys.

    MATLAB Figure ウィンドウで、プロットを右クリックし、[I/O セレクター] を選択して、プロットをチャネルのサブセットに制限できます。

    impulse では、複数の動的システムの応答を同じ軸上にプロットすることができます。たとえば、PI コントローラーと PID コントローラーでシステムの閉ループ応答を比較します。システムの伝達関数を作成し、コントローラーを調整します。

    H = tf(4,[1 2 10]);
    C1 = pidtune(H,'PI');
    C2 = pidtune(H,'PID');

    閉ループ システムを形成し、そのインパルス応答をプロットします。

    sys1 = feedback(H*C1,1);
    sys2 = feedback(H*C2,1);
    impulse(sys1,sys2)
    legend('PI','PID','Location','SouthEast')

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI, PID.

    impulse は既定で、プロットするシステムごとに異なる色を選択します。入力引数 LineSpec を使用して色とライン スタイルを指定できます。

     impulse(sys1,'r--',sys2,'b')
     legend('PI','PID','Location','SouthEast')

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent PI, PID.

    最初の LineSpec "'r--' は、PI コントローラーでの応答を表す赤い破線を指定します。2 番目の LineSpec "'b' は、PID コントローラーでの応答を表す青い実線を指定します。凡例に、指定された色とライン スタイルが反映されます。プロットをさらにカスタマイズするには、impulseplot を使用します。

    「複数システムのインパルス応答の比較」 の例では、いくつかの個々のシステムの応答を 1 つの軸にプロットする方法を説明しています。モデル配列に複数の動的システムが配置されている場合、impulse はそのすべての応答を一度にプロットします。

    モデル配列を作成します。この例では、固有振動数が異なる 2 次伝達関数の 1 次元配列を使用します。最初に、モデル配列のメモリを事前に割り当てます。次のコマンドで、零点とゲインの SISO 伝達関数からなる 1 行 5 列の行を作成します。最初の 2 つの次元は、モデルの出力と入力を表します。残りの次元は配列の次元です

     sys = tf(zeros(1,1,1,5));

    配列を設定します。

    w0 = 1.5:1:5.5;    % natural frequencies
    zeta = 0.5;        % damping constant
    for i = 1:length(w0)
       sys(:,:,1,i) = tf(w0(i)^2,[1 2*zeta*w0(i) w0(i)^2]);
    end

    (モデル配列とそれらの作成方法の詳細については、モデル配列を参照してください)。配列内のすべてのモデルのインパルス応答をプロットします。

    impulse(sys)

    Figure contains an axes object. The axes object contains 5 objects of type line. This object represents sys.

    impulse は、配列内のすべてのエントリの応答に同じライン スタイルを使用します。エントリを区別する 1 つの方法は、動的システム モデルの SamplingGrid プロパティを使用して配列内の各エントリを対応する w0 値に関連付けることです。

    sys.SamplingGrid = struct('frequency',w0);

    次に、応答を MATLAB Figure ウィンドウにプロットする場合は、トレースをクリックして、対応する周波数値を確認できます。

    出力引数を指定すると、impulse は応答データの配列を返します。SISO システムの場合、応答データは、応答がサンプリングされる時間点の数と等しい長さの列ベクトルとして返されます。時間点のベクトル t を指定することができ、あるいはシステム ダイナミクスに基づいて impulse に時間点を選択させることも可能です。たとえば、t = 0 ~ t = 5 秒の間、101 の時間点で SISO システムのインパルス応答を抽出します。

    sys = tf(4,[1 2 10]);
    t = 0:0.05:5;
    y = impulse(sys,t);
    size(y)
    ans = 1×2
    
       101     1
    
    

    MIMO システムの場合、応答データは次元 N x Ny x Nu の配列で返されます。NyNu は動的システムの出力および入力の数です。たとえば、2 入力、1 出力のシステムを表す、以下の状態空間モデルを考えます。

    A = [-0.5572,-0.7814;0.7814,0];
    B = [1,-1;0,2];
    C = [1.9691,6.4493];
    sys = ss(A,B,C,0);

    t = 0 ~ t = 20 秒の間、200 の時間点でこのシステムのインパルス応答を抽出します。

    t = linspace(0,20,200);
    y = impulse(sys,t);
    size(y)
    ans = 1×3
    
       200     1     2
    
    

    y(:,i,j) は、時間 "t" における "j" 番目の入力から "i" 番目の出力へのインパルス応答を含む列ベクトルです。たとえば、2 番目の入力から出力へのインパルス応答を抽出します。

    y12 = y(:,1,2);
    plot(t,y12)

    Figure contains an axes object. The axes object contains an object of type line.

    同定されたパラメトリック モデルのインパルス応答を、ノンパラメトリック (実測) モデルのインパルス応答と比較します。また、3 σ の信頼領域も表示します。

    データを読み込みます。

    load iddata1 z1

    パラメトリック モデルを推定します。

    sys1 = ssest(z1,4);

    ノンパラメトリック モデルを推定します。

    sys2 = impulseest(z1);

    比較のためにインパルス応答をプロットします。

    t = (0:0.1:10)';
    [y1, ~, ~, ysd1] = impulse(sys1,t);
    [y2, ~, ~, ysd2] = impulse(sys2,t);
    plot(t, y1, 'b', t, y1+3*ysd1, 'b:', t, y1-3*ysd1, 'b:')
    hold on
    plot(t, y2, 'g', t, y2+3*ysd2, 'g:', t, y2-3*ysd2, 'g:')

    Figure contains an axes object. The axes object contains 6 objects of type line.

    同定された時系列モデルのインパルス応答を計算します。

    時系列モデルは信号モデルとも呼ばれ、測定される入力信号がありません。このモデルのインパルス プロットでは、その (測定されない) ノイズ チャネルを、インパルス信号の適用先の入力チャネルとして使用します。

    データを読み込みます。

    load iddata9;

    時系列モデルを推定します。

    sys = ar(z9, 4);

    sys は形式 A y(t) = e(t) のモデルで、e(t) はノイズ チャネルを表します。インパルス応答を計算するため、e(t) は入力チャネルとして扱われ、e@y1 と名付けられます。

    インパルス応答をプロットします。

    impulse(sys)

    Figure contains an axes object. The axes object with title From: e@y1 To: y1 contains 2 objects of type line. This object represents sys.

    入力引数

    すべて折りたたむ

    動的システム。SISO または MIMO 動的システム モデルか、動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。

    • tfzpkss モデルなどの連続時間または離散時間の数値 LTI モデル。

    • genssuss モデルなどの一般化された、あるいは不確かさをもつ LTI モデル。(不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です。)

      • 調整可能な制御設計ブロックの場合、関数は応答データをプロットする処理と返す処理の両方においてモデルをその現在の値で評価します。

      • 不確かさをもつ制御設計ブロックの場合、関数はモデルのノミナル値とランダム サンプルをプロットします。出力引数を使用する場合、関数はノミナル モデルのみの応答データを返します。

    • sparss モデルや mechss モデルなどのスパース状態空間モデル。スパース状態空間モデルの最終時間 tFinal を指定しなければなりません。

    • idtfidssidproc モデルなどの同定された LTI モデル。このようなモデルの場合、関数は信頼区間をプロットし、周波数応答の標準偏差を返すこともできます。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です。)

    impulse は、frdgenfrdidfrd モデルなどの周波数応答データ モデルをサポートしません。

    sys がモデルの配列である場合、この関数は同じ座標軸上に配列のすべてのモデルの応答をプロットします。

    インパルス応答の終了時間。正のスカラー値として指定します。impulse は、t = 0 から t = tFinal までインパルス応答をシミュレートします。

    • 連続時間システムの場合、この関数は、システム ダイナミクスから自動的にステップ サイズと点数を判定します。システム時間単位で tFinal を表し、sysTimeUnit プロパティで指定されます。

    • 離散時間システムの場合、この関数は sys のサンプル時間をステップ サイズとして使用します。システム時間単位で tFinal を表し、sysTimeUnit プロパティで指定されます。

    • サンプル時間を指定しない離散時間システム (Ts = -1) の場合、impulsetFinal を、シミュレートするサンプリング周期の数として解釈します。

    インパルス応答を計算するタイミングの時間ベクトル。正のスカラー値のベクトルとして指定します。システム時間単位で t を表し、sysTimeUnit プロパティで指定されます。

    • 連続時間モデルの場合は、tTi:dt:Tf 形式で指定します。各タイム ステップでの応答を取得するために、関数は dt を連続システムに対する離散近似のサンプル時間として使用します。

    • 離散時間モデルの場合は、tTi:Ts:Tf 形式で指定します。ここで、Tssys のサンプル時間です。impulse は、長さが Ts で高さが 1/Ts の単位面積パルスに対する応答を計算します。Ts はサンプル時間です。このパルスは、Ts がゼロに近付くにつれて、連続時間ディラック インパルス δ(t) に近付きます。

    impulse は、Ti に関係なく、常に t = 0 でインパルス入力を適用します。

    ライン スタイル、マーカー、色。1、2、または 3 文字の string または文字ベクトルとして指定します。文字が表示される順序は任意です。3 つの特性 (ライン スタイル、マーカーおよび色) をすべて指定する必要はありません。たとえば、ライン スタイルを省略してマーカーを指定した場合、プロットはラインなしでマーカーのみを表示します。この引数の設定の詳細については、関数 plot の入力引数 LineSpec を参照してください。

    例: 'r--' は赤い破線を指定します。

    例: '*b' は青いアスタリスク マーカーを指定します。

    例: 'y' は黄色いラインを指定します。

    出力引数

    すべて折りたたむ

    インパルス応答データ。配列として返されます。

    • SISO システムの場合、y は、t (指定した場合) または tOut (t を指定しない場合) と同じ長さの列ベクトルです。

    • 単入力、多出力システムの場合、y は、時間サンプルと同じ行数、および出力と同じ列数をもつ行列です。したがって、y の j 番目の列、つまり y(:,j) には、入力から j 番目の出力へのインパルス応答が含まれます。

    • MIMO システムの場合、各入力チャネルのインパルス応答は y の 3 番目の次元に沿って積み上げられます。y の次元は N x Ny x Nu です。ここで、

      • N は時間サンプルの数です。

      • Ny はシステムの出力数です。

      • Nu はシステムの入力数です。

      したがって、y(:,i,j) は、t または tOut で指定された時間における "j" 番目の入力から "i" 番目の出力へのインパルス応答を含む列ベクトルです。

    インパルス応答が計算される時間。ベクトルとして返されます。特定の時間ベクトル t を指定しない場合、impulse は、システム ダイナミクスに基づいてこの時間ベクトルを選択します。時間は sys の時間単位で表されます。

    状態軌跡。配列として返されます。sys が状態空間モデルの場合、x には、t または tOut の各時間における sys の状態の発展が含まれます。x の次元は N x Nx x Nu です。ここで、

    • N は時間サンプルの数です。

    • Nx は状態の数です。

    • Nu はシステムの入力数です。

    したがって、k 番目の入力で挿入されたインパルスへの応答に伴う状態の発展は、配列 x(:,:,k) で与えられます。行ベクトル x(i,:,k) には、i 番目のタイム ステップの状態値が含まれます。

    同定されたモデルのインパルス応答の標準偏差。y と同じ次元の配列として返されます。sys にパラメーター共分散情報が含まれていない場合、ysd は空です。

    制限

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

    • impulse コマンドは、内部遅延をもつ連続時間モデルでは機能しません。そのようなモデルでは、pade を使用してむだ時間を近似してから、インパルス応答を計算します。

    ヒント

    • 追加のプロット カスタマイズ オプションが必要な場合は、代わりに impulseplot を使用してください。

    • 任意の入力信号へのシステム応答をシミュレートするには、lsim を使用します。

    アルゴリズム

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

    x˙=Ax+buy=Cx

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

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

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

    バージョン履歴

    R2006a より前に導入