在人人的Matlab主页看看有什么学习的东西   复制过来。

几种解决方法:

第一种:


1
2
3
4
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)

第二种:


1
2
3
4
5
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]

第三种:


1
2
3
4
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)

第四种:


1
2
3
4
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形式的一些零散的解答================
Q&A 1

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&A 2

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&A 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;