在matlab中从大到小排序 20

编写一个功能函数fun1(),该函数能够将输入矩阵A中的所有元素从大到小排成一行输出,并同时输出各元素在原矩阵当中所处的行、列位置。... 编写一个功能函数fun1( ),该函数能够将输入矩阵A中的所有元素从大到小排成一行输出,并同时输出各元素在原矩阵当中所处的行、列位置。 展开
 我来答
微生飞Wn
2009-12-06 · TA获得超过1228个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:281万
展开全部
当A为向量时:
sort(A)实现从小到大排序;
sort(A,'descend')实现从大到小排序;
sort(A,'ascending')实现从小到大排序;
当A为矩阵时:
sort(A)实现按列从小到大排序;
sort(A,'descend')同理。
sort(A,'ascending')同理。
sort(A,2)实现按行从小到大排序;
sort(A,2,'descend')同理。

用[x,y]=sort(A)可以把A按从小到大排序
并给出在A中相应的下标(y中记录的是下标)
你想要几个最大的数,就从后往前取几个y的值就可以了

或者用x,y]=sort(A,'descend')从大到小排序
输出前面的值就可以了

参考资料: http://hi.baidu.com/2008zhenghui

hallowwar
推荐于2018-05-06 · TA获得超过553个赞
知道小有建树答主
回答量:630
采纳率:0%
帮助的人:422万
展开全部
function [pos,row] =find_matrix(a);
handle =fopen('pos.txt','w');
dim =size(a);
C =reshape(a,1,[]);
row =sort(C,'descend');
fprintf(handle,'After sort : %g \r\n\r\n',row);
for index =1:length(C)
pos = find(a==C(index));
if mod(pos,dim(1))==0
rowtp =dim(1);
else
rowtp =mod(pos,dim(1));
end
if pos/dim(1)-mod(pos/dim(1),1)>0
cltp =pos/dim(1)-mod(pos/dim(1),1);
else
cltp =1;
end

fprintf(handle,'%g is at : row = %g ,column =%g \r\n\r\n',C(index),rowtp,cltp);
end
fclose(handle);
end
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者nd9ozCHBje
2020-03-21 · TA获得超过3.7万个赞
知道小有建树答主
回答量:1.2万
采纳率:24%
帮助的人:2405万
展开全部
1、字符串排序应该用sortrows函数。
2、你的变量a使用cell数组感觉非常别扭,处理起来麻烦很多,不如直接用结构数组(那样代码中的两次转换都可以省去)。
示例代码:
a{1}.text='bb';
a{2}.text='aa';
a{1}.data=4;
a{2}.data=8;
%
转为结构数组
a=[a{:}];
%
按字符串排序
[b,idx]=sortrows({a.text}');
a=a(idx);
%
转回cell数组
a=mat2cell(a,1,ones(1,length(a)));
%
查看结果
a{1}
a{2}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式