声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1264|回复: 11

[编程技巧] 求助一个命令的问题,谢谢!

[复制链接]
发表于 2007-1-20 15:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比如已知一个矩阵[2 4 3;4 5 3;2 7 4;9  5  7],请问如何提出该矩阵中最大值,并确定其在矩阵中的位置,另外第二,第三大的值又怎么确定呢?谢谢阿!刚刚学,呵呵。
回复
分享到:

使用道具 举报

发表于 2007-1-20 17:12 | 显示全部楼层

回复

这种简单问题建议看看书,相信应当可以自己解决.
提示: 先将矩阵变成向量,再用sort排序.最大,第二,第三,...可统一处理.
  下标用find即可找出.具体用法看书或help...

[ 本帖最后由 xjzuo 于 2007-1-20 19:55 编辑 ]
发表于 2007-1-20 19:47 | 显示全部楼层
max(max(A))可以求这个矩阵的最大值

比如
[a,I]=max(max(A,[],2))
[b,J]=max(max(A))
a是这个最大值,b也是
I则是它在的行,J是他在的列
发表于 2007-1-20 20:03 | 显示全部楼层

回复 #2 xjzuo 的帖子

知道怎么把某个元素替换吗?

我是觉得第二第三大的矩镇应该在把最大的替换掉以后才能找出具体的值和位置
发表于 2007-1-20 20:10 | 显示全部楼层
>> [A,I]=sort([4,6,-2,1])
A =
    -2     1     4     6

I =
     3     4     1     2
发表于 2007-1-20 20:10 | 显示全部楼层
原帖由 lxq 于 2007-1-20 20:03 发表
知道怎么把某个元素替换吗?

我是觉得第二第三大的矩镇应该在把最大的替换掉以后才能找出具体的值和位置


不用替换.例如:矩阵a变为向量b后进行sort,
b(1),b(2),...自然就是最大,第二,第三,... 了.
发表于 2007-1-20 20:17 | 显示全部楼层

回复 #5 eight 的帖子

这种方法应该把矩镇分解成向量形式吧?
那样的话也够麻烦的
发表于 2007-1-20 20:34 | 显示全部楼层
原帖由 lxq 于 2007-1-20 20:17 发表
这种方法应该把矩镇分解成向量形式吧?
那样的话也够麻烦的




  1. >> X=[4,6,-2;1,0,-3;-4,-1,3;0,5,-6]
  2. X =
  3.      4     6    -2
  4.      1     0    -3
  5.     -4    -1     3
  6.      0     5    -6
  7. >> A=X(:);
  8. >> [B,I]=sort(A)
  9. B =
  10.     -6
  11.     -4
  12.     -3
  13.     -2
  14.     -1
  15.      0
  16.      0
  17.      1
  18.      3
  19.      4
  20.      5
  21.      6

  22. I =
  23.     12
  24.      3
  25.     10
  26.      9
  27.      7
  28.      4
  29.      6
  30.      2
  31.     11
  32.      1
  33.      8
  34.      5
复制代码


如果只需获取函数值,不需要知道在原X中具体位置,则以下命令任选其一:


  1. >> B(end)
  2. ans =
  3.      6
  4. >> X(I(end))
  5. ans =
  6.      6
复制代码


如果要返回具体位置,则:
  1. >>[C,D] = ind2sub(size(X),I)
复制代码

其中(C(end),D(end))表示最大值的位置,其余类推

评分

1

查看全部评分

发表于 2007-1-20 21:00 | 显示全部楼层

回复

看来我还是把代码写一下较好.
有兴趣的人也可以自己想一想, 或许有更好的方法也不一定.
%%%%%%%%%%%%%%%%%%%%%%%%%%
x=fix(10*rand(6)); %%% 以随机矩阵为例
x1=flipud(sort(unique(x(:))));
max=x1(1)  %%% 最大值
max2=x1(2) %%%第二大值
[i1,j1]=find(x==x1(1))
[i2,j2]=find(x==x1(2))
%%%%%%%%%%%%%%%%%%%%%
第三,第四...均类似可求出.

:当然,我这里是考虑了最一般的情形,显得似乎有些复杂;
  如果矩阵元素均不相同,程序可以更简单.

[ 本帖最后由 xjzuo 于 2007-1-20 21:09 编辑 ]

评分

1

查看全部评分

发表于 2007-1-20 21:01 | 显示全部楼层

回复 #8 eight 的帖子

:@) 呵呵 是啊
:@)
发表于 2007-1-20 21:28 | 显示全部楼层
稍微总结一下:
这本来可能是一个作业题,本想只提示一下的,结果倒讨论开了.
不过能引起(热烈)讨论总是好的,因为这本就是讨论版嘛.
也希望以后大家都能积极参与问题的讨论.
发表于 2007-1-20 23:02 | 显示全部楼层

回复 #11 xjzuo 的帖子

xjzuo 总结得很好啊

以后如果有问题

最好能让大家一起讨论

不管自己的观点是否完全正确

这样才能营造一个好的氛围
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 19:05 , Processed in 0.095706 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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