Rcpp中的元素智能矩阵乘法

xbs*_*bsd 7 rcpp

我正在研究一个需要逐元素矩阵乘法的代码.我试图在Rcpp中实现这个,因为代码需要一些昂贵的循环.我对Rcpp相当新,可能会遗漏一些东西,但我不能让元素明确的矩阵乘法起作用.

// [[Rcpp::export]]

NumericMatrix multMat(NumericMatrix m1, NumericMatrix m2) {
    NumericMatrix multMatrix = m1 * m2 // How can this be implemented ?
}
Run Code Online (Sandbox Code Playgroud)

我可能会遗漏一些非常微不足道的东西,并想问是否有任何方法可以做到这一点(除了使用循环迭代每个元素并乘以).

提前致谢.

Dir*_*tel 5

您可能希望使用RcppArmadillo(或RcppEigen)进行矩阵的实际数学运算.

R> library(RcppArmadillo)
R> cppFunction("arma::mat schur(arma::mat& a, arma::mat& b) { 
+                   return(a % b); }", depends="RcppArmadillo")
R> schur(matrix(1:4,2,2), matrix(4:1,2,2))
     [,1] [,2]
[1,]    4    6
[2,]    6    4
R> 
Run Code Online (Sandbox Code Playgroud)

元素乘法也称为Schur(或Hadamard)乘法.在犰狳,%支持它; 请参阅犰狳文档了解更多信息.