对矩阵的行调用泛型函数



我想在Matlab。这意味着我需要为X的每一行x计算k(x,y)以及CCD_ 5的每一行CCD_。下面是一些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变体对取自XY的每一行调用一个函数?

不幸的是,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那么好,但仍然比以前的情况高效得多。

你厌倦了pdist2的自定义距离功能吗?

第页。S.
在Matlab 中最好不要使用ij作为变量

相关内容

  • 没有找到相关文章

最新更新