找到三维矩阵(或n维)中最小元素的索引

时间:2014-01-03 19:32:01

标签: matlab matrix octave

我有一个矩阵D(i,j,k),我希望找到ijk,以便最小化x

x = D(i,j,k)

例如:

D = rand(10,10,10);
min(min(min(D))) = 0.5123; %The smallest element in D

我想知道的是D的指数0.5123

我该怎么做? 谢谢, 埃利奥特

3 个答案:

答案 0 :(得分:7)

使用colon运算符尝试min,然后ind2sub

[xmin,ind] = min(D(:));
[ii,jj,kk] = ind2sub(size(D),ind)

答案 1 :(得分:5)

answer by @chappjc非常适合3D案例。

对于 n -dimensional 情况,请使用从{em>的单元格数组中获取的ind2sub a comma-separated list的输出ñ:

indices = cell(1,ndims(D)); %// define number of indices (size of cell array)
[minVal linInd] = min(D(:)); %// linear index of minimizer
[indices{:}] = ind2sub(size(D),linInd); %// return indices in cell array
indices = cell2mat(indices); %// convert to nx1 vector containing the indices

答案 2 :(得分:1)

您可以使用find功能。

D = rand(10,10,10);
[I, J]=find(D == min(min(min(D))));

请注意,对于超过2维的矩阵:

  

如果X是N维阵列,其中N> 1。 2,则J是N-1尾随的线性指数   X的尺寸

请参阅:http://www.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html

希望有所帮助