加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

R语言RcppEigen计算点乘与矩阵乘法连乘算法错误处理

发布时间:2021-11-07 13:51:22 所属栏目:教程 来源:互联网
导读:计算点乘与矩阵乘法连乘计算错误 当我们想将 R 中的连乘(如下公式所示)修改成 Rcpp 代码时, t(X)^2 %*% X 理论上我们只用在 .cpp 代码中输入下述语句即可(默认使用了 RcppEigen 库): X.adjoint().array().square() * X.array().square(); 但实际上这样
计算点乘与矩阵乘法连乘计算错误
当我们想将 R 中的连乘(如下公式所示)修改成 Rcpp 代码时,
 
t(X)^2 %*% X
理论上我们只用在 .cpp 代码中输入下述语句即可(默认使用了 RcppEigen 库):
 
X.adjoint().array().square() * X.array().square();
但实际上这样会会出现问题,原因是 X.adjoint().array().square() 与 X.array().square() 没有成功转化成 Eigen::MatrixXd 形式。虽然单独显示两部分都没问题(可以直接输出看到),但是连乘的时候就会出错。这时我们分开进行一个默认转换,然后再进行矩阵乘法即可,如下所示:
 
Eigen::MatrixXd A, B;
A = X.adjoint().array().square();
B = X.array().square();
A * B;

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读