関数n4sidの引数​orderは、本当に​推定モデルの次数を指​定しているだけでしょ​うか? 推定モデルの​次数指定以外の用途に​もorderが用いら​れているように感じま​す

5 ビュー (過去 30 日間)
seiya sugimoto
seiya sugimoto 2018 年 7 月 25 日
コメント済み: seiya sugimoto 2018 年 8 月 9 日
SystemIdentificationToolbox付属のデータ(dcmdata)に対してn4sidを用いて線型モデルを推定しました。その際、orderに渡す値として 2 と 'best' の二種類を試したところ、どちらの推定モデルも2次でしたが、モデルの品質が大きく異なっていました。
同じ入出力データを用いてn4sidでモデルを推定しているにもかかわらず、orderの指定の仕方が違うと、推定したモデルも違ってくるということが問題となりました。 n4sid.mのコードを見てみたところ、
・orderは推定モデルの次数指定以外にも、モデルを推定するための何らかの情報を指定しているのではないか?
・もしそうならば、order(の最大値)が変わると何がどう変わってくるのか?
の2点の疑問が生じました。回答をお願い致します。
以下に、モデル推定に用いたコードを示します。
>> load dcmdata;
>> z = iddata(y,u,0.1);
>> z.InputName = 'Voltage';
>> z.OutputName = {'Angle';'AngVel'};
>> sys_best = n4sid(z, 'best', 'Ts', 0 , 'Disturbancemodel','none');
>> sys_2 = n4sid(z, 2, 'Ts', 0 , 'Disturbancemodel','none');

採用された回答

Hiroumi Mita
Hiroumi Mita 2018 年 8 月 8 日
モデル次数を"best"にした場合、アルゴリズムは次の設定で計算します。
1. Model order (この例では2 ) 2. N4Horizon
これを設定するには次のようにする必要があります。
opt = n4sidOptions;
opt.N4Horizon = sys_best.Report.N4Horizon;
sys_2 = n4sid(z, 2, 'Ts', 0 , 'Disturbancemodel','none', opt)
  1 件のコメント
seiya sugimoto
seiya sugimoto 2018 年 8 月 9 日
ありがとうございます。
ご回答を参考にn4sidで同定すると、次数2を指定したときも、次数'best'を指定したときと同じモデルを推定することができました。

サインインしてコメントする。

その他の回答 (1 件)

Hiroumi Mita
Hiroumi Mita 2018 年 8 月 6 日
これはご指摘の通り、奇妙な現象です。開発元に確認します。 現状では、次を正としてください。
sys_best = n4sid(z, 'best', 'Ts', 0 , 'Disturbancemodel','none')
  1 件のコメント
seiya sugimoto
seiya sugimoto 2018 年 8 月 6 日
ご回答ありがとうございます。
開発元の方へ確認が取れましたら、お教えいただけますと幸いです。よろしくお願いいたします。

サインインしてコメントする。

カテゴリ

Help Center および File Exchange状態空間モデル についてさらに検索

製品


リリース

R2008b

Community Treasure Hunt

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

Start Hunting!