2016-09-16 10 views
1

特定のシステムのステップ応答をlsim関数を使用して複製しようとしていますが、結果の出力が正しくありません。私が間違っていることは何ですか?matlabを使用してlsimを使用して閉ループシステム応答を実行

STEP()を使用:

s = tf('s'); 
G = 56.54/(0.12*s^2+0.6*s+58.31); 
D = 0.21 + 19.95/s + 0.04*s; 
H = G*D/(1+G*D); 
y = 2.5*step(H); 
plot(y) 

lsimを使用():ここで

は私のコードの比較だ

ya = 0; 
e = 2.5; 
t1 = 0:.05:10; 
er = 2.5*ones(length(t1),1); 
G = 56.54/(0.12*s^2+0.6*s+58.31); 
D = 0.21 + 19.95/s + 0.04*s; 
GDss = ss(D*G); 
x = [0 0 0]; 
for k = 1:100 
[y,t,x] = lsim(GDss,er,t1,x); 
    ya(k) = y(length(t1)); 
    er = (e - y(length(t1)))*ones(length(t1),1); 
    x = x(98:100); 
end 
plot(ya) 

プロットのyと屋は同じで、 "必要がある" が、それは何が起こっているのではありません。 ヘルプ?

答えて

0

私が見る限り、H = G*D/(1+G*D);のステップ応答は「ステップ()」で計算されますが、「lsim()」のステップ応答はGDss = D*G;です。システムは同じではないので、結果も同じではありません。

0

キャプテンフューチャーは、同じことを確認していません。もちろん、オープンループシステムは不安定で、爆発します。

しかし、このようなことについては、あなた自身のためにもう少し構造化されており、lsimは既にforループのためにしています。

H = minreal(feedback(series(D,G),1)); 
opt = stepDataOptions('StepAmplitude',2.5); 
step(H,1,opt) 
% 
t = 0:0.01:1; 
u = ones(1,length(t)); 
figure,lsim(H,u,t) 
関連する問題