首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB中矢量化交集核函数?

如何在MATLAB中矢量化交集核函数?
EN

Stack Overflow用户
提问于 2014-01-14 13:15:20
回答 1查看 1.4K关注 0票数 7

在MATLAB中使用LIBSVM,需要预先计算直方图交集核矩阵.

假设x,y是两个向量。核函数为K(x,y) =和(min(x,y))。为了提高效率,大多数情况下的最佳做法是将操作向量化。

我想要做的是计算核矩阵,比如计算两个矩阵之间的欧几里德距离,比如pdist2(A,B,‘欧几里得’)。在定义函数'intKernel‘之后,我可以通过调用pdist2(A,B,intKernel)来计算交叉内核。

我知道函数'pdist2‘可能是一个选项。但是我不知道怎么写自定义的距离函数。然而,我不知道如何在一个浓缩表达式中编码向量(1×-M)和矩阵(M-by-N)之间的交集核。

“爬虫垫”可能是不可行的,因为基质真的很大,比如说,20000乘360000。

任何帮助都将不胜感激。

你好,佩云

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-14 13:35:06

我认为pdist2是一个很好的选择,所以我帮助您定义您的距离函数。

根据doc,自定义距离函数必须有两个输入:第一个是1×N向量;第二个是M-by-N矩阵(注意顺序!)。

为了避免使用确实是内存消耗的repmat,您可以使用bsxfun对数据应用一些基本操作,并在单例维度上进行扩展。在您的情况下,您可以做以下事情:

代码语言:javascript
复制
distance_kernel = @(x,Y) sum(bsxfun(@min,x,Y),2);

对列进行求和,得到一个列向量作为输出。

然后打电话给pdist2,你就完蛋了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21114487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档