当前位置: 首页>>代码示例>>C++>>正文


C++ SparseMatrix::innerVector方法代码示例

本文整理汇总了C++中eigen::SparseMatrix::innerVector方法的典型用法代码示例。如果您正苦于以下问题:C++ SparseMatrix::innerVector方法的具体用法?C++ SparseMatrix::innerVector怎么用?C++ SparseMatrix::innerVector使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在eigen::SparseMatrix的用法示例。


在下文中一共展示了SparseMatrix::innerVector方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: updateMatrix

//update random Vectors
void updateMatrix(Eigen::SparseMatrix<double,Eigen::RowMajor>& randomMatrix,
                  const Eigen::SparseMatrix<int,Eigen::RowMajor>& adjacencyMatrix,
                  int itr)
{

  int numberOfRVector = randomMatrix.rows();
  int numberOfVertice = randomMatrix.cols();

  std::vector<double> rowSum = getRowSum(adjacencyMatrix);

  for(int i=0; i<numberOfRVector;++i){
    for(int h=0;h<itr;++h){
      Eigen::SparseMatrix<double,Eigen::RowMajor> middleValueMatrix(numberOfVertice,1);
      middleValueMatrix.reserve(1);
      for(int j = 0; j<numberOfVertice; ++j){
         Eigen::SparseMatrix<double,Eigen::RowMajor> v1(1,numberOfVertice), v2(numberOfVertice,1);
         v1.reserve(numberOfVertice);
         v2.reserve(1);
         v1 = adjacencyMatrix.cast<double>().innerVector(j);
         v2 = randomMatrix.innerVector(h).transpose();
         Eigen::SparseMatrix<double,Eigen::RowMajor> middleValue1 = v1*v2;
         double middleValue = 0;
         if(rowSum[j] != 0){
            middleValue = (*middleValue1.valuePtr())/rowSum[j];
          } else
            {
              middleValue = 1;
              }

         middleValueMatrix.insert(j,0) = middleValue;

      }

        Eigen::SparseMatrix<double,Eigen::RowMajor> right = middleValueMatrix.transpose();
        Eigen::SparseMatrix<double,Eigen::RowMajor> left = randomMatrix.innerVector(i);

        randomMatrix.innerVector(i) = 0.5*(left + right);
    }
  }
}
开发者ID:Kaitlynli,项目名称:HyperGraph-Partitioning,代码行数:41,代码来源:algebraicDistance.cpp

示例2: getRowSum

std::vector<double> getRowSum(const Eigen::SparseMatrix<int,Eigen::RowMajor>& adjacencyMatrix)
{
  int rowSize = adjacencyMatrix.rows();
  std::vector<double> rowSum;
  rowSum.reserve(rowSize);
  for(int i=0; i<rowSize;++i){
     double value = adjacencyMatrix.innerVector(i).sum();
     rowSum.push_back(value);
  }

  return rowSum;

}
开发者ID:Kaitlynli,项目名称:HyperGraph-Partitioning,代码行数:13,代码来源:algebraicDistance.cpp


注:本文中的eigen::SparseMatrix::innerVector方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。