数学建模社区-数学中国

标题: 从小到大排序的方法 [打印本页]

作者: 森之张卫东    时间: 2015-7-27 21:58
标题: 从小到大排序的方法
%N的求解
%注意:从小到大排序的方法:sort()函数与fliplr()函数的结合使用。
clc
clear
%--------------A为cheng_xu的X-----------------------------
A=[82,77.9000000000000,0.200425033061791;
    74.2000000000000,75.8000000000000,0.188126683675250;
    78.2000000000000,75.6000000000000,0.192806361387551;
    79.4000000000000,76.9000000000000,0.195943296778620;
    71,81.5000000000000,0.191442498644144;
    68.4000000000000,75.5000000000000,0.180589320900021;
    77.5000000000000,74.2000000000000,0.190158814088605;
    71.4000000000000,72.3000000000000,0.180212499893066;
    72.9000000000000,80.4000000000000,0.192384685823835;
    74.3000000000000,79.8000000000000,0.193347200228280;
    72.3000000000000,71.4000000000000,0.180175910888510;
    63.3000000000000,72.4000000000000,0.170347494596538;
    65.9000000000000,73.9000000000000,0.175466375025804;
    72,77.1000000000000,0.187069264001191;
    72.4000000000000,78.4000000000000,0.189219292318112;
    74,67.3000000000000,0.177048506423094;
    78.8000000000000,80.3000000000000,0.199535696666457;
    73.1000000000000,76.7000000000000,0.187916545911268;
    72.2000000000000,76.4000000000000,0.186423988965194;
    77.8000000000000,76.6000000000000,0.193587196142667;
    76.4000000000000,79.2000000000000,0.195173258322604;
    71,79.4000000000000,0.188766493230544;
    75.9000000000000,77.4000000000000,0.192262722475318;
    73.3000000000000,76.1000000000000,0.187398699704490;
    77.1000000000000,79.5000000000000,0.196419088500140;
    81.3000000000000,74.3000000000000,0.194974051520026;
    64.8000000000000,77,0.178059671504641;
    81.3000000000000,79.6000000000000,0.201727779468635];

A1=A(:,1)';  %提取第一列数据
A2= sort(A1);   %第一列数据升序排列
A2=fliplr(A2);  %颠倒位置,得到 由大到小排列
n=length(A2);
for i=1:n   %循环的作用:将原矩阵所在位置的数值,用排序后,该数值所对应的
    for j=1:n            %      序号代替(下同)。
        if A1(1,j)==A2(i)
                A1(1,j)=i;
                break;
        end
    end
end
A1_new=A1; %完成更替。

A1=A(:,2)';  %提取第二列数据
A2= sort(A1);   %第二列数据升序排列
A2=fliplr(A2);  %颠倒位置,得到由大到小排列
n=length(A2);
for i=1:n
    for j=1:n
        if A1(1,j)==A2(i)
                A1(1,j)=i;
                break;
        end
    end
end
A1_2_new=A1; %完成更替。


A1=A(:,3)';  %提取第三列数据
A2= sort(A1);   %第三列数据升序排列
A2=fliplr(A2);  %颠倒位置,得到由大到小排列
n=length(A2);
for i=1:n
    for j=1:n
        if A1(1,j)==A2(i)
                A1(1,j)=i;
                break;
        end
    end
end
A1_3_new=A1; %完成更替。

N=[A1_new',A1_2_new',A1_3_new'];















欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5