我有一个大矩阵,边长约为。我需要多次将这个矩阵与另一个矩阵进行元素乘法。我通过以下方式完成此过程:
- 向量化(通过犰狳)这个矩阵,即将它展平在一个数组中。
- 将此阵列拆分为多个核心。每个核心将占据该矩阵的一部分并进行乘法运算。
现在我意识到,出于数学原因,我只需要这个矩阵的上三角部分。如何仅矢量化上三角部分并丢弃矩阵的其他组件?简单地循环并不是那么好。我还有其他选择吗?
我的矩阵是犰狳复矩阵arma::cx_mat
。我目前的矢量化功能是:
typedef double Real;
typedef std::vector<std::complex<Real> > VecType;
arma::cx_mat myMatrix;
//fill my matrix...
VecType vectorizedMatrix = arma::conv_to<VecType>::from(myMatrix);
我觉得std::vector
非常有用,因为我使用标准算法非常有效地进行元素乘法std::transform()
,这是最佳优化(AFAIK)。