获取3D矩阵内的最大位置

问题描述 投票:0回答:1

如何获得一个三维矩阵的最大值(以前是二维的,现在是三维矩阵),并通过 reshape)在MATLAB中,这样我就可以得到该最大值在矩阵中的位置?

我写了下面的代码,但遗憾的是得到的最大值的维度大于矩阵的维度。

mxshirin=max(max(frvrdin))

[X,Y,Z]=size(frvrdin)
[o,i]=find(frvrdin==mxshirin)
xo=size(o)
xi=size(i)
matlab matrix max dimension
1个回答
0
投票

如果 frvrdin 是三维的。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 进入第三轮。

© www.soinside.com 2019 - 2024. All rights reserved.