作业帮 > 综合 > 作业

matlab建立m文件对矩阵排序的问题

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 21:13:34
matlab建立m文件对矩阵排序的问题
matlab中建立m文件解决下面的问题
建立一个矩阵1 4 5
2 5 7
3 5 6
首先根据第二列数字大小,从小到大排序.当第二列数字相等时,按第三列数字从小到大排序.
借助if,for这样的语句
矩阵1 4 5
2 5 7
3 5 6
先根据第二列数字从小到大排序,结果
1 4 5
2 5 7
3 5 6
因为第二列有两个五,再按第三列数字从小到大排序,结果
1 4 5
2 5 6
3 5 7
这样的m文件应该怎么编写?
谢谢
matlab建立m文件对矩阵排序的问题
function [R] = my_sort(A)
R = st(A,2);
a = sort(R(:,2));
k = 1;
while k<=length(a)
    id = find(R(:,2)==a(k))';
    if id>1
        b = R(k:k+length(id)-1,:);
        b = st(b,3);
        R(k:k+length(id)-1,:) = b;
    end;
    k = k+length(id);
end;
function r = st(B,cc)
a = sort(B(:,cc));
k = 1;
while k<=length(a)
    id = find(B(:,cc)==a(k))';
    p = length(id);
    r(k:k+p-1,:) = B(id,:);
    k = k+p;
end;

% 以上存为 my_sort.m
% 调用
R = my_sort(A);
A =

     4     0     2     8     1     4     6     7     8
     3     4     6     4     1     4     6     3     3
     3     8     9     8     4     4     9     0     6
     3     9     6     7     8     9     5     4     7
     3     2     8     6     4     0     4     7     1
     5     1     0     3     8     2     1     7     9
     1     8     1     1     4     0     6     9     5

>> my_sort(A)

ans =

     4     0     2     8     1     4     6     7     8
     5     1     0     3     8     2     1     7     9
     3     2     8     6     4     0     4     7     1
     3     4     6     4     1     4     6     3     3
     1     8     1     1     4     0     6     9     5
     3     8     9     8     4     4     9     0     6
     3     9     6     7     8     9     5     4     7
再问: 谢谢,运行结果是对的。 能不能帮忙再解释一下,我水平太差有点看不懂?
再答: function [R] = my_sort(A) R = st(A,2); % 将矩阵A按第2列降序排序 a = sort(R(:,2)); % 取出第一次排序的结果列的第2列并排序 k = 1; while k