获取3D矩阵中最大值的位置



如何在MATLAB中获得三维矩阵(之前是二维的,通过reshape转换为三维矩阵(的最大值,以便获得该最大值在矩阵中的位置?

我写了下面的代码,但不幸的是,为最大值获得的维度大于矩阵的维度。

mxshirin=max(max(frvrdin))
[X,Y,Z]=size(frvrdin)
[o,i]=find(frvrdin==mxshirin)
xo=size(o)
xi=size(i)

如果frvrdin是3D,max(max(frvrdin))将是1x1x3矢量:

frvrdin = rand(3,3,3);
max(max(frvrdin))
ans(:,:,1) =
0.8235
ans(:,:,2) =
0.9502
ans(:,:,3) =
0.7547

不要嵌套max()函数,只需使用'all'开关即可同时获取整个矩阵的最大值。

max(frvrdin,[],'all')
ans =
0.9340

如果您使用的是较旧的MATLAB,请使用列展平:max(frvrdin(:))

你不能在两个以上的维度上使用max[val,idx]=max()的自动定位输出,所以使用findind2sub:

frvrdin = rand(3,3,3);
val = max(frvrdin,[],'all');  % Find maximum over all dims
idx = find(abs(frvrdin-val)<1e-10); % Compare within tolerance
[row,col,page] = ind2sub(size(frvrdin),idx);  % Get subscript indices

其中row是第一个维度的索引,col是第二个维度,最后page是第三个维度。

最新更新