查看: 1262|回复: 12|关注: 0

[已解决] MATLAB 矩阵排序问题,求大神指导

[复制链接]

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
  • 关注者: 1
我有一个M*N的矩阵,例如:[10 3 6 8;6 8 2 9;....]输出则为:[4 1 2 3;2 3 1 4;...].意思就是说按照行进行比较,每一行的数有N个,那么从第一个数开始比较,每一行最大的数为N,其次为N-1,....一次类推,最小的数就为1,请各位大神指导,用MATLAB实现

论坛优秀回答者

专家

2444 麦片

财富积分


20003000


4

主题

4730

帖子

546

最佳答案
  • 关注者: 515
发表于 2018-1-17 09:38:45 | 显示全部楼层
1.写个for循环,一行一行做
2.具体做法是sort函数
  1. doc sort
复制代码

用返回值带I的调用方法

MATLAB 基础讨论
版块优秀回答者

入门

102 麦片

财富积分


50500


1

主题

173

帖子

21

最佳答案
发表于 2018-1-17 09:55:58 | 显示全部楼层
sort函数可以作为其中重要的一部分

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-1-17 09:56:26 | 显示全部楼层
halleyhit 发表于 2018-1-17 09:38
1.写个for循环,一行一行做
2.具体做法是sort函数

谢谢,我昨天试了sort函数,它返回的是从小到大或从大到小的值的位置的排序,跟我要的结果不一样,但是我刚才想了一下,因为我要的结果是归一化,效果应该一样,谢谢啊

论坛优秀回答者

专家

2444 麦片

财富积分


20003000


4

主题

4730

帖子

546

最佳答案
  • 关注者: 515
发表于 2018-1-17 10:05:24 | 显示全部楼层
bendan721 发表于 2018-1-17 09:56
谢谢,我昨天试了sort函数,它返回的是从小到大或从大到小的值的位置的排序,跟我要的结果不一样,但是我 ...

是我的错,其实要稍微变通一下
  1. a=[10 3 6 8];
  2. [b,I]=sort(a,'descend');
  3. c=[4:-1:1];
  4. d=c(I)
复制代码

论坛优秀回答者

中级

528 麦片

财富积分


5001500


0

主题

3547

帖子

121

最佳答案
  • 关注者: 65
发表于 2018-1-17 10:08:14 来自手机 | 显示全部楼层
halleyhit 发表于 2018-1-17 10:05
是我的错,其实要稍微变通一下

大神好贴心
是我的话,doc  sort
就回答完了

论坛优秀回答者

专家

2444 麦片

财富积分


20003000


4

主题

4730

帖子

546

最佳答案
  • 关注者: 515
发表于 2018-1-17 10:10:14 | 显示全部楼层
Angla2016 发表于 2018-1-17 10:08
大神好贴心
是我的话,doc  sort
就回答完了

在二楼,我也是这么做的。。。
只是后来发现,楼主的问题要稍加变通,所以补了代码
我很少写代码,觉得好玩的才动手

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-1-17 14:43:40 | 显示全部楼层
18833126693 发表于 2018-1-17 09:55
sort函数可以作为其中重要的一部分

谢谢,我用了sort函数

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-1-17 14:45:14 | 显示全部楼层
halleyhit 发表于 2018-1-17 10:05
是我的错,其实要稍微变通一下

谢谢大神,我刚开始学MATLAB,所以有些问题还不能灵活变通,大神,你真好

新手

7 麦片

财富积分


050


2

主题

17

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2018-1-17 14:54:46 | 显示全部楼层
halleyhit 发表于 2018-1-17 10:05
是我的错,其实要稍微变通一下

a=[10 3 6 8 9;5 6 3 2 7;9 3 10 2 4];
[b,I]=sort(a,2,'descend');
c=[5:-1:1];
d=c(I)

大神,大神,又笨了一下,只有第一行的数是对的,后面的两行就不对了,是不是?请指导
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表