2013-03-24 215 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