Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português -

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> CACSD > flts

flts

時間応答 (離散時間, 離散化システム)

呼び出し手順

[y [,x]]=flts(u,sl [,x0])
[y]=flts(u,sl [,past])

パラメータ

u

行列 (入力ベクトル)

sl

リスト (線形システム syslin)

x0

ベクトル (状態量初期値 ; デフォルト値 =0)

past

(過去の)行列 (デフォルト値=0)

x,y

行列 (状態量と出力)

説明

  • 状態空間形式:

sl は,その状態空間表現で指定される離散線形システム です(syslin 参照):

sl=syslin('d',A,B,C,D) :

x[t+1] = A x[t] + B u[t]
y[t] = C x[t] + D u[t]

もしくは,より一般的に,D が多項式行列 の場合 (p = degree(D(z))) :

D(z) = D_0 + z D_1 + z^2 D_2 +..+ z^p D_p
y[t] = C x[t] + D_0 u[t] + D_1 u[t+1] +..+ D_[p] u[t+p]
  • 伝達関数表現:

y=flts(u,sl[,past]). ここで, sl は伝達行列形式の線形システムです, すなわち,

sl=syslin('d',transfer_matrix) ( syslin参照).

past = [u     ,...,  u   ]
       [ -nd           -1]
       [y     ,...,  y   ]
       [ -nd           -1]

は, u と y の過去の値の行列です.

nd は, sl の分母行列の各行の最小公倍数の 最大自由度です.

u=[u0 u1 ... un]  (input)
y=[y0 y1 ... yn]  (output)

p は分子の最大次数と分母の最大次数の差です.

sl=syslin('d',1,1,1);u=1:10;
y=flts(u,sl); 
plot2d(y)
[y1,x1]=flts(u(1:5),sl);y2=flts(u(6:10),sl,x1);
y-[y1,y2]

//多項式Dがある場合:
z=poly(0,'z');
D=1+z+z^2; p =degree(D);
sl=syslin('d',1,1,1,D);
y=flts(u,sl);[y1,x1]=flts(u(1:5),sl);
y2=flts(u(5-p+1:10),sl,x1);  // (update)
y-[y1,y2]

//遅延 (伝達関数形式): flts(u,1/z)
// 典型的な応答
z=poly(0,'z');
h=syslin(0.1,(1-2*z)/(z^2+0.3*z+1))
imprep=flts(eye(1,20),tf2ss(h));   //インパルス応答
clf();
plot(imprep,'b')
u=ones(1,20);
stprep=flts(ones(1,20),tf2ss(h));   //ステップ応答
plot(stprep,'g')

// その他の例
A=[1 2 3;0 2 4;0 0 1];B=[1 0;0 0;0 1];C=eye(3,3);Sys=syslin('d',A,B,C);
H=ss2tf(Sys); u=[1;-1]*(1:10);
//
yh=flts(u,H); ys=flts(u,Sys);
norm(yh-ys,1)    
//ホット リスタート
[ys1,x]=flts(u(:,1:4),Sys);ys2=flts(u(:,5:10),Sys,x);
norm([ys1,ys2]-ys,1)
//
yh1=flts(u(:,1:4),H);yh2=flts(u(:,5:10),H,[u(:,2:4);yh(:,2:4)]);
norm([yh1,yh2]-yh,1)
//D<>0 を指定
D=[-3 8;4 -0.5;2.2 0.9];
Sys=syslin('d',A,B,C,D);
H=ss2tf(Sys); u=[1;-1]*(1:10);
rh=flts(u,H); rs=flts(u,Sys);
norm(rh-rs,1)
//ホット リスタート
[ys1,x]=flts(u(:,1:4),Sys);ys2=flts(u(:,5:10),Sys,x);
norm([ys1,ys2]-rs,1)
//With H:
yh1=flts(u(:,1:4),H);yh2=flts(u(:,5:10),H,[u(:,2:4); yh1(:,2:4)]);
norm([yh1,yh2]-rh)

参照

  • ltitr — 離散時間応答 (状態空間)
  • dsimul — 離散時間状態空間シミュレーション
  • rtitr — 離散時間応答 (伝達行列)
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Mar 03 11:00:53 CET 2011