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


C++ MatrixXf::noalias方法代码示例

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


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

示例1: compute_relentropy_cpu

double MapOptimizer::compute_relentropy_cpu (MatrixXf & dH) const
{
  const MatrixXf & H = m_conditional;
  const MatrixSf & P = dom_flow.joint;

  MatrixXf HP(H.rows(), H.cols());
  MatrixXf HPt(H.rows(), H.cols());

  #pragma omp parallel sections
  {
    #pragma omp section
    HP.noalias() = H * P;

    #pragma omp section
    HPt.noalias() = H * P.transpose();
  }

  MatrixXf HPH = HP * H.transpose();

  const float sum_P = m_dom_flow_sum;
  const float sum_Q = m_cod_flow_sum;
  const float dQ_scale = sum_P / sum_Q;

  const MatrixSf & Q = cod_flow.joint;
  MatrixSf & dQ = m_temp_dQ;

  double relentropy = 0;
  for (int i = 0; i < Q.outerSize(); ++i) {
    for (MatrixSf::InnerIterator iter(Q,i); iter; ++iter) {

      const float Q_yy = iter.value();
      const float HPH_yy = HPH(iter.row(), iter.col());
      const float dQ_yy = dQ_scale * Q_yy / HPH_yy;

      relentropy += Q_yy * log(dQ_yy);

      dQ.coeffRef(iter.row(), iter.col()) = dQ_yy;
    }
  }
  relentropy /= sum_Q;
  ASSERT_LE(0, relentropy);

  MatrixXf dH2(H.rows(), H.cols());

  #pragma omp parallel sections
  {
    #pragma omp section
    dH.noalias() = dQ.transpose() * HP;

    #pragma omp section
    dH2.noalias() = dQ * HPt;
  }

  dH += dH2;

  return relentropy;
}
开发者ID:cutun,项目名称:kazoo,代码行数:57,代码来源:cloud_map.cpp


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