0
我想在.oct文件中編寫簡潔的代碼,以對輸入列向量/矩陣執行矩陣乘法。例如,該函數在內部創建了11個元素的行向量A,然後在一個循環內,我想執行A * B,其中B是11個元素將輸入向量向下滑動窗口,將結果寫入輸出列向量/矩陣隨着循環的進展而變化。我已經嘗試使用各種信息的方法,並http://wiki.octave.org/Tips_and_tricks但我不能得到任何編譯 - 我得到的錯誤是:Octave .oct文件中的矩陣操作
錯誤:無法轉換「矩陣」到「雙」在分配
我的代碼的相關部分是: -
Matrix price = args(0).matrix_value() ; // a single column matrix
Matrix output = args(0).matrix_value() ;
// create intermediate calculation matrices
Matrix vec_11 (1,11) ;
Matrix price_11 (11,1) ;
Matrix result (1,1) ;
for (int ii = -m ; ii < (m+1) ; ii ++)
{
vec_11 is filled in this loop and then doesn't change
}
for (octave_idx_type ii (50) ; ii < args(0).length() ; ii++)
{
// extract rolling window and perform matrix multiplication
result = vec_11 * price.extract(ii-10,0,ii,0) ;
output(ii,1) = result ; // this writing to output matrix fails
}
retval_list(0) = output ;
我用的矩陣值的價格,vec_11,結果和輸出,因爲我試圖做矩陣乘法,所以我不明白爲什麼我得到此轉換爲雙重錯誤。如果我將價格和輸出更改爲column_vector_value並將vec_11更改爲RowVector,我仍然會得到相同的錯誤。看來,
result = vec_11 * price.extract(ii-10,0,ii,0) ;
是給matrix_value但我不能把它寫入無論是matrix_value或column_vector_value輸出。
你確定這就是你編譯代碼?您提到的錯誤與您展示的代碼不符。你能告訴我們確切的事情和最小的例子,再現錯誤?順便說一句,如果你只有一個列/行,你應該使用'RowVector'和'ColumnVector'類,而不是'Matrix'。 – carandraug
@carandraug你是對的 - 我的部分草率複製和粘貼。編輯過的問題顯示正確的編譯錯誤,並添加了一些額外的信息以迴應您的評論。 – babelproofreader