m0_53718710 2023-05-16 14:49 采纳率: 57.1%
浏览 43
已结题

matlab中函数D = pdist2(X,Y,distance,'Smallest',K)代码编写

求matlab函数pdist2中,D = pdist2(X,Y,distance,'Smallest',K),的代码编写,用matlab编写这个函数

  • 写回答

2条回答 默认 最新

  • 2023大表舅 2023-05-16 15:17
    关注

    计算两组 n × p 和 m × p 维数据之间所有可能的二次距离,返回前 K 个最小距离和对应的索引。

    function [D,I] = pdist2(X,Y,distance,~,K)
    % Calculate pairwise distances between two sets of vectors
    % X: n x p matrix, Y: m x p matrix, distance: distance metric string,
    % K: number of smallest distances to return

    n = size(X,1);
    m = size(Y,1);
    
    switch distance
        case 'euclidean'
            % Euclidean distance
            D = sqrt(sum(X.^2,2) + sum(Y.^2,2).' - 2*X*Y.');
        case 'sqeuclidean'
            % Squared Euclidean distance
            D = sum(X.^2,2) + sum(Y.^2,2).' - 2*X*Y.';
        case 'cityblock'
            % City block distance
            D = abs(bsxfun(@minus,X,permute(Y,[3 2 1])));
            D = permute(sum(D,2),[1 3 2]);
        case 'cosine'
            % Cosine distance
            D = 1 - (X*Y.' ./ (sqrt(sum(X.^2,2))*sqrt(sum(Y.^2,2).')));
        otherwise
            error('Unknown distance metric');
    end
    
    % Sort distances and return smallest K
    [D,idx] = sort(D,2,'ascend');
    D = D(:,1:K);
    I = zeros(n,K);
    for i = 1:n
        I(i,:) = idx(i,1:K);
    end
    

    end

    这个函数首先读入 X 和 Y 两个输入矩阵,计算它们之间的距离,具体方法根据输入变量 distance 而有所不同。距离矩阵 D 然后按升序排序,并返回前 K 个最小值和对应的索引。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月16日

悬赏问题

  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费
  • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行