電子書籍の厳選無料作品が豊富!

MATLABを用いて1/s^2+s+1のシステムの整定時間を下記のように求めたのですが、このプログラムでは、最初の立ち上がりの時に±5%に入る部分もカウントされてしまうらしいので、このグラフを後ろから探索する方法で求めたいのですが、どのようにすれば求まるか教えてください。

》 num = [1];
》 den = [1 1 1];
》 t = 0:0.01:15;
》 [y,x,t] = step(num,den,t);
》 plot(t,y),grid
》 L = find(abs(y-1)>=0.05);
》 Ts = t(L(length(L)))

Ts =

5.2800

A 回答 (2件)

結論から書きますと, そのプログラムで求まった整定時間Ts=5.28[s]は正しいと思います.



ステップ応答において, 目標値の5%に収束する時間を, (時間のデータの)後ろ側から探索したいという要望ですが, 以下の方法はどうでしょうか. plot(t, y), grid の行のあとに実行します.

------
L=length(t); % ベクトルtの要素数がLに入ります
while y(L)>0.95 & y(L)<1.05
L=L-1;
end
Ts=t(L);
------

whileループでは, 目標値(=1)の5%以内に入っているとき, つねにLの値を1ずつ減らしていきます. yの値が5%を超えるとき---このときの時刻がt=Ts 整定時間となっています---, ループから抜け出ます. この時点でのLの値が, 整定時間に相当する要素数に等しくなっていますので, Ts=t(L)として算出します.

これを実行すると, Ts=5.28 となりました. つまりsamurai999さんの結果と同じです.

samuraui999さんのプログラムの一部をもう少しスマートに書き直すとすれば,

Ts = t(L(end))

とするくらいでしょうか. でも結果は同じです.
    • good
    • 0
この回答へのお礼

とても助かりました。
ありがとうございます。

お礼日時:2007/02/10 23:23

スクリプトを見た感じだと、


このままで、すでに、最後の±5%になる時刻が求まるようになっていると思いますが。
試してみました?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ちゃんと試したのですが、整定時間の求め方に誤りがあるといわれてレポートを返されてしまったんです。
このプログラム以外に整定時間を求める方法はないのでしょうか?

お礼日時:2007/01/27 21:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!