非常基本的问题:如何在随机矩阵中找到最高或最低值。 我知道有可能说:
a = find(A>0.5)
但我正在寻找的更像是这样:
A = rand(5,5)
A =
0.9388 0.9498 0.6059 0.7447 0.2835
0.6338 0.0104 0.5179 0.8738 0.0586
0.9297 0.1678 0.9429 0.9641 0.8210
0.0629 0.7553 0.7412 0.9819 0.1795
0.3069 0.8338 0.7011 0.9186 0.0349
% find highest (or lowest) value
ans = A(19)%for the highest or A(7) %for the lowest value in this case
答案 0 :(得分:16)
查看min()
和max()
函数。它们可以返回最高/最低值及其索引:
[B,I]=min(A(:)); %# note I fixed a bug on this line!
返回I=7
和B=A(7)=A(2,2)
。表达式A(:)
告诉MATLAB暂时将A视为一维数组,因此即使A为5x5,它也会返回线性索引7.
如果你需要2D坐标,即B=A(7)=A(2,2)
中的“2,2”,你可以使用返回[I,J] = ind2sub(size(A),I)
的{{1}},参见here。
更新
如果您需要所有条目的指数达到最小值,您可以使用find:
I=2,J=2
I = find(A==min(A(:));
现在是所有这些的载体。
答案 1 :(得分:3)
对于矩阵,您需要运行MIN和MAX函数两次,因为它们按列操作,即max(A)
返回一个向量,其中每个元素都是相应列中的最大元素A。
>> A = rand(4) A = 0.421761282626275 0.655740699156587 0.678735154857773 0.655477890177557 0.915735525189067 0.0357116785741896 0.757740130578333 0.171186687811562 0.792207329559554 0.849129305868777 0.743132468124916 0.706046088019609 0.959492426392903 0.933993247757551 0.392227019534168 0.0318328463774207 >> max(max(A)) ans = 0.959492426392903 >> min(min(A)) ans = 0.0318328463774207
请注意,这仅适用于矩阵。高维数组需要运行MIN和MAX的次数与使用NDIMS时可以获得的维数一样多。
答案 2 :(得分:0)
试试这个
A=magic(5)
[x,y]=find(A==max(max(A))) %index maximum of the matrix A
A_max=A(x,y)
[x1,y1]=find(A==min(max(A))) %index minimum of the matrix A
A_min=A(x1,y1)