MATLAB Answers

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

11 views (last 30 days)
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');

  0 Comments

Sign in to comment.

Accepted Answer

Hiroumi Mita
Hiroumi Mita on 8 Aug 2018
モデル次数を"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 Comment

seiya sugimoto
seiya sugimoto on 9 Aug 2018
ありがとうございます。
ご回答を参考にn4sidで同定すると、次数2を指定したときも、次数'best'を指定したときと同じモデルを推定することができました。

Sign in to comment.

More Answers (1)

Hiroumi Mita
Hiroumi Mita on 6 Aug 2018
これはご指摘の通り、奇妙な現象です。開発元に確認します。 現状では、次を正としてください。
sys_best = n4sid(z, 'best', 'Ts', 0 , 'Disturbancemodel','none')

  1 Comment

seiya sugimoto
seiya sugimoto on 6 Aug 2018
ご回答ありがとうございます。
開発元の方へ確認が取れましたら、お教えいただけますと幸いです。よろしくお願いいたします。

Sign in to comment.

Sign in to answer this question.