gensig
lsim
を使用してシステム応答をシミュレーションする周期信号を生成
説明
例
矩形波の生成
lsim
を使用して動的システム応答をシミュレートするために使用する矩形波を 2 秒の周期で生成します。
tau = 2;
[u,t] = gensig("square",tau);
gensig
は、信号をベクトル u
と対応する時間ベクトル t
として返します。信号の期間を指定しないと、gensig
は 5 つの周期 (Tf = 5*tau
) を実行する信号を生成します。タイム ステップを指定しないと、既定では周期あたり 64 のサンプル (Ts = tau/64
) に設定されます。したがって、この信号はタイム ステップ 0.03125 秒で 10 秒間実行されます。信号をプロットします。
plot(t,u)
gensig
は、0 から始まる単位振幅の矩形波を返します。u
を変更して振幅とエンドポイントが異なる矩形波を取得できます。15 秒間実行され、–1 と 1 の値を切り替える周期 5 の矩形波を作成します。
tau = 5;
Tf = 15;
[u0,t] = gensig("square",tau,Tf);
u = 2*u0-1;
plot(t,u)
t
と u
を使用して、lsim
で動的システムの応答をシミュレートします。lsim
コマンドは、t
の値が、シミュレーションした動的システム モデルの単位 (sys.TimeUnit
) であることを前提としています。
sys = tf(30,[1 5 30]); lsim(sys,u,t)
サンプル時間を指定した信号の生成
タイム ステップ (サンプル時間) を指定しない場合、既定では gensig
は 1 周期あたり 64 サンプル (Ts = tau/64
) に設定されます。lsim
で離散時間モデルをシミュレートする場合、タイム ステップはモデルのサンプル時間と同じでなければなりません。gensig
にこのサンプル時間を指定すると、適切な信号が生成されます。たとえば、0.1 秒のサンプル時間で離散時間の動的システム モデルをシミュレートするための正弦波を生成します。
tau = 3;
Tf = 6;
Ts = 0.1;
[u,t] = gensig("sine",tau,Tf,Ts);
生成された信号に対するモデル応答をシミュレーションします。
sys = zpk([],[-0.1,-0.5],1,Ts); lsim(sys,u,t,Ts)
多入力システムをシミュレーションするための入力の生成
lsim
で多入力システムをシミュレーションするには、各入力に適用された信号を表す列をもつ行列として入力信号を指定します。つまり、u(:,j)
は各タイム ステップの j
番目の入力に適用される信号です。gensig
を使用してこのような入力行列を生成するには、各入力の信号をまとめて作成し、それらを行列にスタックします。
たとえば、周期 2 秒の矩形波を 1 番目の入力に挿入し、1.5 秒ごとのパルスを 2 番目の入力に挿入する 2 入力システムをシミュレーションするための信号を作成します。2 つのベクトルが同じ長さになるように期間とサンプル時間を指定します。これは、ベクトルを行列に結合するために必要です。
Tf = 8; Ts = 0.02; [uSq,t] = gensig("square",2,Tf,Ts); [uPu,~] = gensig("pulse",1.5,Tf,Ts); u = [uSq uPu]; size(u)
ans = 1×2
401 2
u
の各行 u(i,:)
は、対応する時間 t(i)
において入力に適用される信号 (u1,u2)
です。
gensig
で作成されていない信号は同じ長さであれば、結合できます。たとえば、uSq
を 1 番目の入力、uPu
を 2 番目の入力に適用して 3 入力システムをシミュレートすると仮定します。また、0 から開始され、最終時間 Tf = 8
には 1 に増えるランプを 3 番目の入力に適用します。信号が uSq
および uPu
と同じ長さの列ベクトルであることを確認します。次に、信号を他の信号と結合して入力行列を作成します。
uRa = linspace(0,1,401)'; u = [uSq uPu uRa]; size(u)
ans = 1×2
401 3
plot(t,u)
これで、u
と t
を使用して 3 入力モデルをシミュレーションすることができます。3 入力、2 出力の状態空間モデルを生成し、入力に適用された u
に対するその 2 つの出力における応答をシミュレーションします。
rng('default')
sys = rss(3,2,3);
lsim(sys,u,t)
入力引数
type
— 周期信号のタイプ
"sine"
| "square"
| "pulse"
生成する周期信号のタイプ、次のいずれかの値として指定します。
"sine"
— 正弦波"square"
— 矩形波"pulse"
— 周期性パルス
すべての信号には単位振幅があり、t = 0
における初期値は 0 です。string ではなく文字ベクトル ('sine'
) を使用してタイプを指定できます。
tau
— 周期
正のスカラー
生成される信号の周期。正のスカラー値として指定します。lsim
でシミュレートする動的システム モデルの単位で tau
を指定します。たとえば、sys.TimeUnit
が 'seconds'
の場合、30 秒の周期で sys
をシミュレートするための信号を生成するには、tau
を 30 に設定します。sys.TimeUnit
が 'minutes'
の場合、この信号を生成するには、tau
を 0.5 に設定します。
Ts
— タイム ステップ
tau/64
(既定値) | 正のスカラー
タイム ステップ、正のスカラー値として指定します。出力ベクトル t
は 0:Ts:Tf
形式です。Ts
の単位は、lsim
でシミュレートする動的システム モデルの TimeUnit
プロパティで指定された単位です。離散時間モデルをシミュレートする場合は、Ts
をモデルのサンプル時間 Ts
と等しい値に設定します。
出力引数
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)