www.pudn.com > WebsiteCode.zip > jd.m, change:2008-07-24,size:1890b

function [J,distinct_d] = jd(X,p) % Computes the distances between all pairs of points in a sampling plan X % using the p-norm, sorts them in ascending order and removes multiple % occurences. % % Inputs: % X - sampling plan being evaluated % p - distance norm (p=1 rectangular - default, p=2 Euclidean) % % Outputs: % J - multiplicity array (that is, the number of pairs separated by % each distance value). % distinct_d - list of distinct distance values % % Copyright 2007 A Sobester % % This program is free software: you can redistribute it and/or modify it % under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or any % later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser % General Public License for more details. % % You should have received a copy of the GNU General Public License and GNU % Lesser General Public License along with this program. If not, see % <http://www.gnu.org/licenses/>. if ~exist('p','var') p = 1; end % Number of points in the sampling plan n = size(X,1); % Compute the distances between all pairs of points d = zeros(1,n*(n-1)/2); for i = 1:n-1 for j = i+1:n % Distance metric: p-norm d((i-1)*n-(i-1)*i/2+j-i) = norm(X(i,:)-X(j,:),p); end end % Remove multiple occurences distinct_d = unique(d); % Pre-allocate memory for J J = zeros(size(distinct_d)); % Generate multiplicity array for i = 1:length(distinct_d) % J(i) will contain the number of pairs separated % by the distance distinct_d(i) J(i) = sum(ismember(d,distinct_d(i))); end