tfestを用いたシステム同定

15 views (last 30 days)
Tatsuya Kurokawa
Tatsuya Kurokawa on 7 Nov 2019
Commented: Tatsuya Kurokawa on 10 Dec 2019
tfestを用いて得られたモデル(idtf)の出力の初期値について質問があります。
伝達関数モデルのため出力の初期値は0になるはずだと考えていますが,0にはならず,初期値を持ってしまっています。
z = iddata(y1,[u1,u2,u3],Ts,'Tstart',0); %推定・検証用データ
np = [2 2 2];
nz = [1 1 1 ];
iodelay = [1 1 1 ];
sys = tfest(z,np,nz,iodelay,'Ts',Ts);
compare(z,sys)
で同定モデルの出力をグラフにしたところ同定モデル出力の初期値が0になりません。
得られたモデルに直達項はなく,入力もサンプリング時間のズレなく与えています。
このような結果はあり得るのか,正しい結果なのかがわかりません。
推定・検証用データの初期値は0です。
浅学非才で的外れな質問をしてしまっているかもしれませんが,どなたかご回答お願いします。

Accepted Answer

Yoko
Yoko on 6 Dec 2019
tfest で推定する際、また compare 関数で比較する際、デフォルト設定では出力結果にフィットするように初期状態を推定するような設定になっています。
もちろん、初期状態を 0 として推定・比較が可能です。下記で設定方法を紹介します。
compare 関数で比較する場合は、例えば下記のように設定します。
opt = compareOptions
opt.InitialCondition = 'z'
compare(z,sys,opt)
また、初期状態を 0 として tfest で推定する場合は、下記のようなコマンドを実行します。
opt = tfestOptions
opt.InitialCondition = 'zero'
sys = tfest(z,np,nz,iodelay,'Ts',Ts, opt);
  3 Comments
Yoko
Yoko on 9 Dec 2019
伝達関数は初期値0ということで疑問に持たれること、もっともと思います。理由に関して具体的な情報がないため、個人的な見解となりますが、伝達関数を状態方程式に変換した場合に初期状態も設定できることから、状態方程式にした場合も含めベストフィットするものを求めるために、初期状態も推定していると思われます。
Tatsuya Kurokawa
Tatsuya Kurokawa on 10 Dec 2019
なるほど、そう考えるのが正しそうですね。細かいところまでご丁寧に対応していただきありがとうございました。

Sign in to comment.

More Answers (0)

Products


Release

R2012a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!