我正在尝试对包含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()没有返回任何模型系数? 的 CODE
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
答案 0 :(得分:0)
在matlab中,*
是两个矩阵之间的矩阵乘积。这意味着第一个矩阵中的列数必须等于第二个矩阵中的行数。您可能打算通过元素乘法使用.*
元素。编辑:对于逐元素乘法,矩阵必须大小相同。检查矩阵的大小。如果它们不适合这些条件,则需要改变一些事情。