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


function Index = phisort(X3D,q,p) 
% Ranks sampling plans according to the Morris-Mitchell numerical quality 
% metric. Note: similar to mmsort, which uses the definition of `space- 
% fillingness' as a basis for the ranking. 
% 
% Inputs: 
%       X3D - three-dimensional array containing the sampling plans to be 
%       ranked. 
%       p - the distance metric to be used (p=1 rectangular - default, p=2 
%       Euclidean) 
%       q - exponent used in the calculation of the metric 
% 
% Output: 
%       Index - index array containing the ranking 
% 
% 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 
 
if ~exist('q','var') 
    q = 2; 
end 
 
% Pre-allocate memory 
Index = (1:size(X3D,3)); 
 
% Bubble-sort 
swap_flag = 1; 
 
while swap_flag==1 
    swap_flag = 0; 
    i=1; 
    while i<=length(index)-1 
        if mmphi(X3D(:,:,Index(i)),q,p) > mmphi(X3D(:,:,Index(i+1)),q,p) 
            buffer = Index(i); 
            Index(i) = Index(i+1); 
            Index(i+1) = buffer; 
            swap_flag = 1; 
        end 
        i = i + 1; 
    end 
end