我想有效地为通用内核函数计算内核矩阵
Matlab的。这意味着我需要为k(x,y)
的每一行x
计算X
以及y
的每一行Y
。这是一些matlab代码,用于计算我的内容
喜欢,但它很慢,
function K=compute_kernel( k_func, X, Y )
m = size(X,1);
n = size(Y,1);
K = zeros(m,n);
for i = 1:m
for j = 1:n
K(i,j) = k_func(X(i,:)', Y(j,:)');
end
end
end
是否有其他方法可以解决此问题,例如:一些bsxfun
变种
在从X
和Y
获取的每一行上调用一个函数?
答案 0 :(得分:1)
pdist2(X,Y, dist_func)
计算dist_func(X, Y(i,:))
,而不是dist_func(X(i,:), Y(i,:))
。所以我需要的实际功能是,
function K=compute_kernel( k_func, X, Y )
% Woohoo! Efficient way to compute kernel
size(X)
size(Y)
m = size(X,1);
n = size(Y,1);
for i = 1:n
K(:,i) = pdist2( Y(i,:), X, k_func);
end
它不如使用pdist2
那么好,但仍然比以前的情况更有效。
答案 1 :(得分:0)
您是否厌倦了pdist2
自定距离功能?