C++ 在Rcpp(和RcppArmadillo)中,如何检查vec是否包含复数?
在R中,我们可以使用is.complex(例如,C++ 在Rcpp(和RcppArmadillo)中,如何检查vec是否包含复数?,c++,r,vector,rcpp,armadillo,C++,R,Vector,Rcpp,Armadillo,在R中,我们可以使用is.complex(例如,is.complex(vec1))检查向量(例如,vec1=c(1+1i,2))是否包含复数。我想知道RcppArmadillo中的等价函数是什么 如何在RcpParadillo中提取向量中每个元素的实部,如R中的Re(vec1)为了提取实部和虚部,可以使用arma::real()和arma::imag()函数。或者,您可以使用sugar函数Rcpp::Re()和Rcpp::Im(): /[[Rcpp::depends(RcppArmadillo)
is.complex(vec1)
)检查向量(例如,vec1=c(1+1i,2)
)是否包含复数。我想知道RcppArmadillo中的等价函数是什么
如何在RcpParadillo中提取向量中每个元素的实部,如R中的
Re(vec1)
为了提取实部和虚部,可以使用arma::real()
和arma::imag()
函数。或者,您可以使用sugar函数Rcpp::Re()
和Rcpp::Im()
:
/[[Rcpp::depends(RcppArmadillo)]]
#包括
//[[Rcpp::导出]]
arma::vec getRe(arma::cx_vec x){
返回arma::实(x);
}
//[[Rcpp::导出]]
Rcpp::NumericVector getIm(Rcpp::ComplexVector x){
返回Rcpp::Im(x);
}
/***R
种子(42)
N[1,]-0.9390771-0.04167943 0.8294135-0.4393582-0.3140354
Re(vec)
#> [1] -0.93907708 -0.04167943 0.82941349 -0.43935820 -0.31403543
getIm(vec)
#> [1] -2.1290236 2.5069224 -1.1273128 0.1660827 0.5767232
Im(vec)
#> [1] -2.1290236 2.5069224 -1.1273128 0.1660827 0.5767232
*/
如果您使用上面的getRe(arma::vec x)
,您将得到:
Warning message:
In getRe(vec) : imaginary parts discarded in coercion
你不能把复数放在一个不打算存储它们的对象中。这是C++是一种强类型语言的结果。因此,不需要模拟is.complex()
请参阅以获取更多参考。要提取实部和虚部,可以使用
arma::real()
和arma::imag()
函数。或者,您可以使用sugar函数Rcpp::Re()
和Rcpp::Im()
:
/[[Rcpp::depends(RcppArmadillo)]]
#包括
//[[Rcpp::导出]]
arma::vec getRe(arma::cx_vec x){
返回arma::实(x);
}
//[[Rcpp::导出]]
Rcpp::NumericVector getIm(Rcpp::ComplexVector x){
返回Rcpp::Im(x);
}
/***R
种子(42)
N[1,]-0.9390771-0.04167943 0.8294135-0.4393582-0.3140354
Re(vec)
#> [1] -0.93907708 -0.04167943 0.82941349 -0.43935820 -0.31403543
getIm(vec)
#> [1] -2.1290236 2.5069224 -1.1273128 0.1660827 0.5767232
Im(vec)
#> [1] -2.1290236 2.5069224 -1.1273128 0.1660827 0.5767232
*/
如果您使用上面的getRe(arma::vec x)
,您将得到:
Warning message:
In getRe(vec) : imaginary parts discarded in coercion
你不能把复数放在一个不打算存储它们的对象中。这是C++是一种强类型语言的结果。因此,不需要模拟is.complex()
请参阅以获取进一步参考。键确实位于倒数第二段:您不需要,因为它是stronly类型化语言。键确实位于倒数第二段:您不需要,因为它是stronly类型化语言。