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


C++ Matrix::rowwise方法代码示例

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


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

示例1:

 inline Eigen::Matrix<T,R,1> 
 rows_dot_self(const Eigen::Matrix<T,R,C>& x) {
   return x.rowwise().squaredNorm();
 }
开发者ID:javaosos,项目名称:stan,代码行数:4,代码来源:rows_dot_self.hpp

示例2: unibak

Eigen::Matrix<double, 4, Eigen::Dynamic> bb_cluster_confidence(Eigen::Matrix<
		double, 4, 20> const & iBB, Eigen::Matrix<double, 20, 1> const & iConf,
		int nD) {

	double SPACE_THR = 0.5;
	Eigen::VectorXd T;
	Eigen::VectorXd Tbak;
	unsigned int iBBcols = nD;
	Eigen::MatrixXd bdist;
	//Calculates the index of the bb that fits the best
	switch (iBBcols) {
	//0 cols, set indices to 1
	case 0:
		T = Eigen::VectorXd::Zero(1);
		break;
		//1 col, set index to 0;
	case 1:
		T.resize(1);
		T(0) = 0;
		break;
		//2 cols, set indices to zero; if above treshhold to 1
	case 2:
		T = Eigen::VectorXd::Zero(2);
		bdist = bb_distance(iBB);
		if (bdist(0, 0) > SPACE_THR) {
			T(1) = 1;
		}
		break;
		//workaround for clustering.
	default:
		Eigen::Vector4d meanBB = iBB.rowwise().mean();
		int maxIndex = 0;
		double maxDist = 10;
		for (int penis = 0; penis < nD; penis++) {
			Eigen::MatrixXd bd = bb_distance(iBB.col(penis), meanBB);
			//save the shortest distance
			if (bd(0, 0) < maxDist) {
				maxIndex = penis;
				maxDist = bd(0, 0);
			}
		}
		//set the indices to the index of the bounding box with the
		//shortest distance
		T = Eigen::VectorXd::Constant(iBBcols, maxIndex);
		break;
	}
	Eigen::VectorXd idx_cluster;
	idx_cluster.resize(0);
	bool breaker;
	//filter indices that occur twice
	for (int p = 0; p < T.size(); p++) {
		breaker = false;
		for (int j = 0; j < idx_cluster.size(); j++)
			if (idx_cluster(j) == T(p)) {
				breaker = true;
				break;
			}
		if (breaker)
			continue;
		Eigen::VectorXd unibak(idx_cluster.size());
		unibak = idx_cluster;
		idx_cluster.resize(unibak.size() + 1);
		idx_cluster << unibak, T(p);
	}
	int num_clusters = idx_cluster.size();

	Eigen::MatrixXd oBB = Eigen::MatrixXd::Constant(4, num_clusters,
			std::numeric_limits<double>::quiet_NaN());
	Eigen::MatrixXd oConf = Eigen::MatrixXd::Constant(4, num_clusters,
			std::numeric_limits<double>::quiet_NaN());
	Eigen::MatrixXd oSize = Eigen::MatrixXd::Constant(4, num_clusters,
			std::numeric_limits<double>::quiet_NaN());

	for (int k = 0; k < num_clusters; k++) {
		std::vector<int> idx;
		for (int u = 0; u < T.size(); u++)
			if (T(u) == idx_cluster(k))
				idx.push_back(u);

		Eigen::MatrixXd iBBidx(4, idx.size());

		for (unsigned int f = 0; f < idx.size(); f++) {
			iBBidx.col(f) = iBB.block(0, idx[f], 4, 1);
		}
		oBB.col(k) = iBBidx.rowwise().mean();
		Eigen::VectorXd iConfidx(idx.size());
		for (unsigned int f = 0; f < idx.size(); f++)
			iConfidx(f) = iConf(idx[f]);
		//save information how valid a certain bounding box is
		oConf(0, k) = iConfidx.mean();
		oSize(0, k) = idx.size();
	}
	Eigen::MatrixXd ret(4, 3 * num_clusters);
	ret << oBB, oConf, oSize;
	return ret;
}
开发者ID:Lajnold,项目名称:OpenTLDC,代码行数:96,代码来源:bb_cluster_confidence.cpp


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