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