0

測定値を表す 200 個のサンプル ポイントを含むベクトル データをモデル化しようとしています。「適合度」を確認したいのですが、読んだ後、次の一連の値を予測することでこれを実行できることがわかりました (ただし、これが正しい方法です。次のコードでエラーが発生し、解決できないため、これで行き詰まっています。誰かがエラーを削除するのを手伝ってくれますか

Error using  * 
Inner matrix dimensions must agree.

Error in data_predict (line 27)
    ypred(j) = ar_coeff' * y{i}(j-1:-1:j-p);

また、コマンド nlarx() を使用してもモデル係数が返されなかったため、非線形 AR モデリング、移動平均、ARMA を使用して係数を取得するなど、同じことを行う方法を教えてもらえますか? コード

if ~iscell(y); y = {y}; end
model = ar(y, 2, 'yw');

%prediction
yresiduals=[];
nsegments=length(y);

ar_coeffs = model.a;
ar_coeff=[ar_coeffs(2) ar_coeffs(3)]
for i=1:nsegments
  pred = zeros(length(y{i}),1);
  for j=p+1:length(y{i})
    ypred(j) = ar_coeff(:)' * y{i}(j-1:-1:j-p);
  end
  yresiduals = [yresiduals; y{i}(p+1:end) - ypred(p+1:end)];
end
4

1 に答える 1

0

matlab では、*2 つの行列間の行列積です。つまり、最初の行列の列数は、2 番目の行列の行数と等しくなければなりません。.*要素ごとの乗算を使用するつもりだったかもしれません。編集:要素ごとの乗算の場合、行列は同じサイズでなければなりません。行列のサイズを確認してください。これらの条件のいずれにも適合しない場合は、何かを変更する必要があります。

于 2013-03-25T00:20:46.593 に答える