0

我想在 .oct 文件中编写简洁的代码,以对输入列向量/矩阵执行矩阵乘法。例如,该函数在内部创建一个包含 11 个元素的行向量 A,然后在循环中我想执行 A * B 其中 B 是输入向量向下的 11 个元素滑动窗口,将结果写入输出列向量/矩阵随着循环的进行。我使用http://wiki.octave.org/Tips_and_tricks上的信息尝试了各种方法,但我无法编译任何东西 - 我得到的错误是:

错误:无法在赋值中将 'Matrix' 转换为 'double'

我的代码的相关部分是: -

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 输出。

4

1 回答 1

0

在邮件列表的帮助下,我终于能够解决我的问题:

output(ii) = result( 0 , 0 ) ; // assign from indexed result matrix to output
于 2013-10-06T23:13:43.673 回答