2012-03-18 58 views
1

我想弄清楚如何將輸入和輸出數據合併到ARX模型中,然後將其應用到BIC(貝葉斯信息標準)公式中。以下是我目前正在使用的代碼:如何將iddata應用於計算?

for i=1:30; %% Set Model Order 
    data=iddata(output,input,1); 
    model = arx(data,[8 9 i]); 
    yp = predict(model,data); 
    ye = regress(data,yp{1,1}(1:4018,1)); 
    M(i) = var(yp); 
    BIC(i)=(N+i*(log(N)-1))/(N-i)*log(M(i)); 
end 

但它不起作用。它不斷給我一個如下所示的錯誤:

「語法」Data {...}「不支持。使用」getexp「命令來從IDDATA對象中提取單個實驗。 我不明白這是什麼意思。有人可以向我解釋,我的代碼在哪裏做錯了?

更新: 我試着做下面的事情,到目前爲止,沒有錯誤。但是,這個BIC的圖形將始終是直線。我的迴歸部分有問題嗎?我該如何做迴歸?

N=length(rainfall_model); 
for i=1:20; % Set Model Order 
    data=iddata(rainfall_model,tmax_model,1); 
    %d1 = getexp(data,1); 
    model = arx(data,[50 9 i]); 
    yp=predict(model,data); 
    y = yp.y ; 
    d1 = data.y ; 
    ye = (d1).^2 - (y).^2; 
    M(i)= mse(ye); 
    BIC(i)=(N+i*(log(N)-1))/(N-i)*log(M(i)); 
end 
+0

「model = arx(data,[50 9 i])」中的變量「i」;「不設置模型順序。它設置模型中的延遲數量。你想要什麼樣的模型來適合你的數據?您應該檢查工具箱文檔中的「幫助arx」。 – Kavka 2012-03-20 00:56:19

+0

是的,我正在嘗試適合arx模型。是的「我」是爲了延遲。對困惑感到抱歉。評論並不意味着在那裏。我只是試圖找到從1-20範圍延遲的最低值。 – Sam 2012-03-20 14:46:36

回答

1

在您的代碼示例中,從「預測」命令返回YP是不能與它一起使用的IDDATA對象和細胞符號「{...}」。如果你想做迴歸,你必須從中提取輸入(yp.u)或輸出(yp.y)數據。

此外,命令'regress'不適用於idddata對象,因爲它不是系統識別工具箱功能。再次調用之前,您必須從「數據」和「yp」變量中提取輸入或輸出數據。

更新:看看有什麼在IDDATA對象(數據和YP),做

get(data) 
get(yp) 

你會看到,你可以用兩種等價的方式提取輸出數據:

yp.y 
yp.OutputData 

同樣,用於輸入數據。

+0

感謝您回覆我的問題。我是這個系統識別工具箱的新手。你能向我解釋我如何提取輸入或輸出?我曾嘗試使用「getexp」命令,但我不確定如何使用此命令。如果我使用SISO數據(單輸入和單輸出),並不意味着我們必須同時使用輸入和輸出數據?在此先感謝 – Sam 2012-03-19 13:30:31

+0

請參閱我對原始問題的更新。 – Sam 2012-03-19 21:48:24