有没有办法在C ++中使用Armadillo来提高对称矩阵的性能?

时间:2019-09-26 18:59:58

标签: c++ matrix distance armadillo

我正在使用Armadillo在c ++中进行矩阵计算,以便计算x,y平面中所有粒子之间的距离。我正在使用以下类,其中myParticls &pSystem是另一个类,其中包含有关所有已创建粒子的信息。

    class DistMatrix
    {
        private:
            arma::Mat<float> _X;
            arma::Mat<float> _Y;


        public:

            DistMatrix(myParticls &pSystem)
            {
             _X = arma::repmat(pSystem.x(), pSystem.size(), 1);
             _Y = arma::repmat(pSystem.y(), pSystem.size(), 1);
            }

            arma::Mat<float> DistanceMatrix()
            {
                return arma::sqrt(arma::square(_X - _X.t()) + arma::square(_Y - _Y.t()));

            }

    };

结果矩阵是一个对称矩阵,根据定义,我将要应用的一半运算将浪费处理能力和内存。我的问题是,有没有办法防止重复操作来提高性能?

我尝试修剪矩阵的上部并将其类型更改为稀疏矩阵,但这只会降低性能。我是c ++的新手,也是一般编程的人。

0 个答案:

没有答案