1

我的测试特征向量是'testpg',训练好的特征向量是'trainpg',两者的维度都是2000 * 1。我的目标是找到两个直方图特征向量之间的距离,因此我做了

distance =  norm(trainpg-testpg)

接下来我将它与一个标量阈值进行比较以检查它是否满足我的条件,上面的代码运行良好,因为我得到了这个距离的标量值,即:例如距离 = 5.4,它是一个标量

但是当我更改代码以使用任何其他基于直方图的距离度量时,它不起作用

我使用了http://www.mathworks.com/matlabcentral/fileexchange/29004-feature-points-in-image--keypoint-extraction/content/FPS_in_image/FPS%20in%20image/Help%20Functions/SearchingMatches中的 pdist2 函数/pdist2.m

我使用的新代码是

距离 = pdist2(trainpg,testpg, 'chisq') d = 大小(距离)

在这里,我收到下标分配尺寸不匹配错误,因为我的距离尺寸现在是 2000*2000 而不是 1*1

我怎样才能得到距离的标量值?

4

1 回答 1

0

如果尺寸2000 x 1适用于您的两个特征向量,那么您应该这样做:

distance = pdist2(trainpg.',testpg.', 'chisq');

pdist2将每一行视为不同的样本。因此,您需要进行转置,告诉 MATLAB 它是单个示例的 2000 维特征,而不是 2000 示例的 1 维特征。作为旁注,如果您的要素是直方图,您可能需要检查直方图相交距离。在此处查找代码。

于 2015-07-11T04:21:38.803 回答