sunlie999 发表于 2007-1-20 15:43

求助一个命令的问题,谢谢!

比如已知一个矩阵,请问如何提出该矩阵中最大值,并确定其在矩阵中的位置,另外第二,第三大的值又怎么确定呢?谢谢阿!刚刚学,呵呵。

xjzuo 发表于 2007-1-20 17:12

回复

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

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

lxq 发表于 2007-1-20 19:47

max(max(A))可以求这个矩阵的最大值

比如
=max(max(A,[],2))
=max(max(A))
a是这个最大值,b也是
I则是它在的行,J是他在的列

lxq 发表于 2007-1-20 20:03

回复 #2 xjzuo 的帖子

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

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

eight 发表于 2007-1-20 20:10

>> =sort()
A =
    -2   1   4   6

I =
   3   4   1   2

xjzuo 发表于 2007-1-20 20:10

原帖由 lxq 于 2007-1-20 20:03 发表
知道怎么把某个元素替换吗?

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

不用替换.例如:矩阵a变为向量b后进行sort,
b(1),b(2),...自然就是最大,第二,第三,... 了.

lxq 发表于 2007-1-20 20:17

回复 #5 eight 的帖子

这种方法应该把矩镇分解成向量形式吧?
那样的话也够麻烦的

eight 发表于 2007-1-20 20:34

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



>> X=
X =
   4   6    -2
   1   0    -3
    -4    -1   3
   0   5    -6
>> A=X(:);
>> =sort(A)
B =
    -6
    -4
    -3
    -2
    -1
   0
   0
   1
   3
   4
   5
   6

I =
    12
   3
    10
   9
   7
   4
   6
   2
    11
   1
   8
   5


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


>> B(end)
ans =
   6
>> X(I(end))
ans =
   6


如果要返回具体位置,则:
>> = ind2sub(size(X),I)
其中(C(end),D(end))表示最大值的位置,其余类推

xjzuo 发表于 2007-1-20 21:00

回复

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

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

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

lxq 发表于 2007-1-20 21:01

回复 #8 eight 的帖子

:@) 呵呵 是啊
:@)

xjzuo 发表于 2007-1-20 21:28

稍微总结一下:
这本来可能是一个作业题,本想只提示一下的,结果倒讨论开了.
不过能引起(热烈)讨论总是好的,因为这本就是讨论版嘛.
也希望以后大家都能积极参与问题的讨论.

lxq 发表于 2007-1-20 23:02

回复 #11 xjzuo 的帖子

xjzuo 总结得很好啊

以后如果有问题

最好能让大家一起讨论

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

这样才能营造一个好的氛围
页: [1]
查看完整版本: 求助一个命令的问题,谢谢!