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);

另外,有人可以告诉我如何做同样的事情,即使用非线性 AR 建模、移动平均和 ARMA 获取系数,因为使用命令 nlarx() 没有返回任何模型系数? 代码

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中,*是两个矩阵之间的矩阵乘积。这意味着第一个矩阵中的列数必须等于第二个矩阵中的行数。您可能打算使用.*逐个元素的乘法。编辑:对于逐个元素的乘法,矩阵必须是相同的大小。检查矩阵的大小。如果它们不符合这些条件中的任何一个,则需要进行更改。

于 2013-03-25T00:20:46.593 回答