⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l2_distance.m

📁 基于测地距离不变性的非线性降维算法源码
💻 M
字号:
function d = L2_distance(a,b,df)% L2_DISTANCE - computes Euclidean distance matrix%% E = L2_distance(A,B)%%    A - (DxM) matrix %    B - (DxN) matrix%    df = 1, force diagonals to be zero; 0 (default), do not force% % Returns:%    E - (MxN) Euclidean distances between vectors in A and B%%% Description : %    This fully vectorized (VERY FAST!) m-file computes the %    Euclidean distance between two vectors by:%%                 ||A-B|| = sqrt ( ||A||^2 + ||B||^2 - 2*A.B )%% Example : %    A = rand(400,100); B = rand(400,200);%    d = distance(A,B);% Author   : Roland Bunschoten%            University of Amsterdam%            Intelligent Autonomous Systems (IAS) group%            Kruislaan 403  1098 SJ Amsterdam%            tel.(+31)20-5257524%            bunschot@wins.uva.nl% Last Rev : Wed Oct 20 08:58:08 MET DST 1999% Tested   : PC Matlab v5.2 and Solaris Matlab v5.3% Copyright notice: You are free to modify, extend and distribute %    this code granted that the author of the original code is %    mentioned as the original author of the code.% Fixed by JBT (3/18/00) to work for 1-dimensional vectors% and to warn for imaginary numbers.  Also ensures that % output is all real, and allows the option of forcing diagonals to% be zero.  if (nargin < 2)   error('Not enough input arguments');endif (nargin < 3)   df = 0;    % by default, do not force 0 on the diagonalendif (size(a,1) ~= size(b,1))   error('A and B should be of same dimensionality');endif ~(isreal(a)*isreal(b))   disp('Warning: running distance.m with imaginary numbers.  Results may be off.'); endif (size(a,1) == 1)  a = [a; zeros(1,size(a,2))];   b = [b; zeros(1,size(b,2))]; endaa=sum(a.*a); bb=sum(b.*b); ab=a'*b; d = sqrt(repmat(aa',[1 size(bb,2)]) + repmat(bb,[size(aa,2) 1]) - 2*ab);% make sure result is all reald = real(d); % force 0 on the diagonal? if (df==1)  d = d.*(1-eye(size(d)));end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -