我的测试特征向量是'testpg',训练过的特征向量是'trainpg',两者的维度都是2000 * 1.我的目的是找到两个直方图特征向量之间的距离,因此我做了
distance = norm(trainpg-testpg)
接下来我将它与标量阈值进行比较以检查它是否满足我的条件。上面的代码效果很好,因为我得到了这个距离的标量值,即:例如距离= 5.4这是一个标量
但是,当我更改代码以使用任何其他基于直方图的距离指标时,它不起作用
中的pdist2函数我使用的新代码是
距离= pdist2(trainpg,testpg,'chisq') d =大小(距离)
这里我得到下标分配尺寸不匹配错误,因为我的距离尺寸现在是2000 * 2000而不是1 * 1
我如何获得距离的标量值?
答案 0 :(得分:0)
如果两个要素向量的维度为2000 x 1
,则应执行以下操作:
distance = pdist2(trainpg.',testpg.', 'chisq');
pdist2
将每一行视为不同的样本。因此,您需要进行转置,告诉MATLAB它是一个单例的2000-D特征,而不是2000例的1-D特征。作为旁注,如果您的要素是直方图,则可能需要检查直方图交点距离。查看here代码。