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文件解决下面的问题
建立一个矩阵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文件应该怎么编写?
谢谢
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
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