2013-03-24 218 views
0

我想模拟一个包含200个采样点的矢量数据,表示一个测量。我想看看“合适的好处”,看完后我发现可以通过预测下一组值(我不是有信心但如果这是正确的方式),因为下面的代码。我是停留在此给出了一个错误,我只是无法解决it.Can有人请在消除误差矩阵尺寸不匹配的错误

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

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

+0

谢谢你的回复。我用过了。*仍然出现同样的错误! – user1142671 2013-03-25 02:47:47