在MatrixXd和VectorXd之间的特征c++矩阵乘法
Eigen C++ matrix multiplication between MatrixXd and VectorXd
下面是我的代码,正如你所看到的,我试图将一个方阵MatrixXd与vectorXd相乘。
当我尝试这样做时,我得到以下错误:"二进制表达式的无效操作数('const typename ProductReturnType>>, Matrix>::Type'(又名'const generproduct ')
我不知道哪里出错了。如果这是一个不好的问题,我很抱歉,但请帮助!
void calcMinPortfolio(int num_ofStocks, Eigen::MatrixXd& covMatrix, Eigen::VectorXd& weights){
Eigen::MatrixXd identityMat;
identityMat.resize(num_ofStocks, num_ofStocks);
identityMat.Identity();
weights = (covMatrix.inverse() * identityMat) / (identityMat.transpose() * covMatrix.inverse() * identityMat);
}
有两个问题:
1 -你构造恒等的方式,你不能在一个动态矩阵上使用.Identity()
(只能在编译大小指定的大小上)。只需使用一行
Eigen::MatrixXd identityMat = Eigen::MatrixXd::Identity(num_ofStocks, num_ofStocks);
2 -分母是一个一般的矩阵乘积(一种类型),所以你不能用它除以一个矩阵。一个矩阵除以另一个矩阵是什么意思?如果这是你想要的,用.inverse()
作为分母。接下来,乘以恒等式没有任何意义,除非covMatrix
是一个标量,而它不是。
PS:即使分母是一个大小的1 x 1
矩阵,它仍然是一个矩阵类型,而不是一个标量,所以你不能除以一个矩阵。如果要将其除以矩阵表示的标量,则使用your_expresion(0)
从1 x 1
矩阵中提取标量。
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 特征命名访问向量段
- 将特征矩阵的向量设置为0
- 特征:模板函数中矩阵的平面图
- basic_string的前导/尾部不区分空格的特征
- 特征 3 类的模板专用化
- 特征 c++:复矩阵的面积双曲正切(atanh)
- C++ 中的特征向量计算
- 根据C++标准的定义实现"is_similar"类型特征
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 有没有办法找到特征矩阵系数的中值?
- 如何将高维数据映射到特征类型?
- 将平面阵列重塑为复杂的特征类型
- 特征 LLT 模块给出不正确的结果?
- 特征模板化函数和维度
- 特征稀疏向量:求最大系数
- 特征 3.3.x:如何在所有行中操作 lamba?
- 如何将向量断言到特征矩阵