我尝试在数据集上使用特征库创建一个相似度矩阵。我只是将 csv 文件读入特征矩阵,但知道作为 matlab 客户,我正在寻找类似 bsxfun 之类的东西或通过欧几里得距离计算来定义实例之间距离的东西。我怎样才能摆脱解决方案或什么来源,函数可能有帮助我 ?
问问题
851 次
1 回答
3
假设您的样本按行存储在矩阵 D 中,那么您可以执行以下操作:
VectorXd N = D.rowwise().squaredNorm();
MatrixXd S = N.replicate(1,n) + N.transpose().replicate(n,1);
S.noalias() -= 2. * D * D.transpose();
S = S.array().sqrt();
这利用了|x-y|²=x²+y²-2x'y
. noalias() 语句只是对 Eigen 的优化,在这个产品中没有别名的风险,因此不需要临时的。.array() 语句切换到数组世界,其中所有函数都按系数应用。
于 2013-08-22T22:30:37.490 回答