犰狳向量矩阵乘法
Armadillo vector-matrix multiplication
是否可以在 Armadillo 中将矩阵乘以向量(点积)?
在我看来,这是我们期望从这种库中获得的基本操作,因此它应该存在。到目前为止我所有的尝试都失败了:
"matrix multiplication: incompatible matrix dimensions: 1206x36 and 1x1206"
"matrix multiplication: incompatible matrix dimensions: 1206x36 and 1206x1"
"matrix multiplication: incompatible matrix dimensions: 1x1206 and 1206x36"
"matrix multiplication: incompatible matrix dimensions: 1206x1 and 1206x36"
是的,这是可能的。您能否提供用于产生上述错误的源代码示例?尝试以下操作,因为它应该可以正常工作。
arma::mat X ;
arma::vec beta ;
beta.resize ( 2 ) ;
beta (0) = 1.0 ;
beta (1) = 3.0 ;
X.resize ( 3, 2 ) ;
X (0,0) = 1.0 ;
X (0,1) = 2.0 ;
X (1,0) = 3.0 ;
X (1,1) = 4.0 ;
X (2,0) = 5.0 ;
X (2,1) = 6.0 ;
std::cout << X * beta << std::endl ;
如果两者都定义为 "arma::mat" 类型,它也可以工作,只要维度兼容。
是否可以在 Armadillo 中将矩阵乘以向量(点积)? 在我看来,这是我们期望从这种库中获得的基本操作,因此它应该存在。到目前为止我所有的尝试都失败了:
"matrix multiplication: incompatible matrix dimensions: 1206x36 and 1x1206"
"matrix multiplication: incompatible matrix dimensions: 1206x36 and 1206x1"
"matrix multiplication: incompatible matrix dimensions: 1x1206 and 1206x36"
"matrix multiplication: incompatible matrix dimensions: 1206x1 and 1206x36"
是的,这是可能的。您能否提供用于产生上述错误的源代码示例?尝试以下操作,因为它应该可以正常工作。
arma::mat X ;
arma::vec beta ;
beta.resize ( 2 ) ;
beta (0) = 1.0 ;
beta (1) = 3.0 ;
X.resize ( 3, 2 ) ;
X (0,0) = 1.0 ;
X (0,1) = 2.0 ;
X (1,0) = 3.0 ;
X (1,1) = 4.0 ;
X (2,0) = 5.0 ;
X (2,1) = 6.0 ;
std::cout << X * beta << std::endl ;
如果两者都定义为 "arma::mat" 类型,它也可以工作,只要维度兼容。