在MATLAB中使用距离度量的错误

时间:2015-07-11 03:17:33

标签: matlab distance chi-squared metric

我的测试特征向量是'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.m

中的pdist2函数

我使用的新代码是

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

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

我如何获得距离的标量值?

1 个答案:

答案 0 :(得分:0)

如果两个要素向量的维度为2000 x 1,则应执行以下操作:

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

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