MatLab 到 Eigen - 标量的矩阵幂
MatLab to Eigen - scalar raised to the power of a matrix
我在 MatLab 中有以下代码,我希望使用 eigen 库理想地移植到 C++:
N(:,i)=2.^L(:,i)+1;
其中L为对称矩阵(1,2;2,1),对角线元素全为1
在 eigen(不受支持)中,我注意到有一个函数可以计算矩阵的指数,但是 none 可以将任意标量提升为矩阵幂。
http://eigen.tuxfamily.org/dox-devel/unsupported/group__MatrixFunctions__Module.html#matrixbase_exp
有什么我想念的吗?
如果您真的想将任意标量提升为矩阵幂,您应该使用恒等式 a^x = exp(log(a)*x)
。
但是,Matlab .^
运算符计算逐元素幂。如果你想在 Eigen 中使用相同的功能,请使用相应的 Array
功能:
N.col(i) = pow(2.0, L.col(i).array()) + 1.0;
注意 Eigen 从 0 开始索引,而 Matlab 从 1 开始,因此您可能需要将 i
替换为 i-1
。
我在 MatLab 中有以下代码,我希望使用 eigen 库理想地移植到 C++:
N(:,i)=2.^L(:,i)+1;
其中L为对称矩阵(1,2;2,1),对角线元素全为1
在 eigen(不受支持)中,我注意到有一个函数可以计算矩阵的指数,但是 none 可以将任意标量提升为矩阵幂。
http://eigen.tuxfamily.org/dox-devel/unsupported/group__MatrixFunctions__Module.html#matrixbase_exp
有什么我想念的吗?
如果您真的想将任意标量提升为矩阵幂,您应该使用恒等式 a^x = exp(log(a)*x)
。
但是,Matlab .^
运算符计算逐元素幂。如果你想在 Eigen 中使用相同的功能,请使用相应的 Array
功能:
N.col(i) = pow(2.0, L.col(i).array()) + 1.0;
注意 Eigen 从 0 开始索引,而 Matlab 从 1 开始,因此您可能需要将 i
替换为 i-1
。