我需要预先计算在MATLAB中使用LIBSVM的直方图相交核矩阵。如何在MATLAB中矢量化相交核函数?
假设x,y是两个向量。核函数是K(x,y)= sum(min(x,y))。为了高效,大多数情况下的最佳做法是对操作进行矢量化。
我想要做的就像计算像计算两个矩阵之间的欧氏距离的核矩阵,如pdist2(A,B,'euclidean')。定义函数'intKernel'后,我可以通过调用pdist2(A,B,intKernel)来计算交集内核。
我知道函数'pdist2'可能是一个选项。但我不知道如何编写自定义距离函数。虽然,我不知道如何在一个浓缩表达式中编码向量(1-by-M)和矩阵(M-by-N)之间的交集核心。
'repmat'可能不可行,因为矩阵非常大,让我们说,20000乘360000。
任何帮助,将不胜感激。
问候, 彭珮云
我之前尝试过这种表达方式,但它会导致下标赋值尺寸不匹配的错误。例如,a = rand(1,10); b = rand(10,10); (b,x,Y),1)); – Peiyun
我想通了。 distance_kernel应该是: distance_kernel = @(x,Y)sum(bsxfun(@min,x,Y),2),它将对列进行求和。 – Peiyun
@Peiyun是的,你是对的,我编辑我的答案。 – Bentoy13