关于如何求矩阵最大值并返回其行列号的汇总:
=============================================by yaping321
第一种:
clear;clc;
A=[0 17 50;-12 40 3;5 -10 2;30 4 3]
[C,I]=max(A(:))
[m,n]=ind2sub(size(A),I)
第二种:
clear;clc;
A=[0 17 50;-12 40 3;5 -10 2;30 4 3]
[M,I]=max(A)
[N,J]=max(M)
[I(J),J]
第三种:
clear;clc;
A=[0 17 50;-12 40 3;5 -10 2;30 4 3]
N=max(max(A)) %或者N=max(A(:))
[r,c]=find(N==A)
第四种:
clear;clc;
A=[0 17 50;-12 40 3;5 -10 2;30 4 3]
[Y_col,Ind_row]=max(A) %每列的最大值及行号
[Y_row,Ind_col]=max(A') %每行的最大值及列号==================================================
Q&A形式的解答:
questions and answer
=====================
Q:
matlab找某列最小值的位置
dis是个m*n的数组
我想找出每列最小值得位置,但是find函数好像用的不对,我写的如下:
find(dis==min(dis))
哪里不对啊,help里也没讲太全,实在不知怎么改。
-------------
A:用[C,I] = min(...)
例子:
===
>> A=magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> [c,i] = min(A)
c =
4 5 1 2 3
i =
3 2 1 5 4
=======================================
Q:
如何获得矩阵每行中最大值的位置现有一m*n的矩阵D(假设矩阵中每个元素都不一样),要求逐行找出最大值,然后记录该最大值的坐标,最后要求生成一个m*2的位置坐标矩阵。
--------------------------
A:这样就可以了
=============
index = zeros(m,2);
for i=1:m
[C,I]=max(D(i,:));
index(i,:) = [i,I];
end
============
测试
D =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
m = 5
运行程序得到
index =
1 2
2 1
3 5
4 4
5 3===========================
Q:我在图像处理编程时遇到这样一个问题,就是想在一幅灰度图象中,要实现查找八邻域的极值点。
比如,给出一下一个八邻域的例子
1 3 2
4 9 6
5 7 8
那么中间的9就是要找的极值点。
并且可以返回象素点的位置及象素点的值。 例如在这个例子就是 2 2 9
当然,也可以当成三元组返回
请问matlab有这个功能吗?
-----------------------------
A:
A = [1 3 2;4 9 6;5 7 8];
[c,hang] = max(A);
[max_A,lie] = max(c);
最终
max_A = 9
hang = 2;
lie= 2;
==============================
Q:
[本帖最后由 faruto 于 2009-4-4 14:21 编辑]