如何获得一个三维矩阵的最大值(以前是二维的,现在是三维矩阵),并通过 reshape
)在MATLAB中,这样我就可以得到该最大值在矩阵中的位置?
我写了下面的代码,但遗憾的是得到的最大值的维度大于矩阵的维度。
mxshirin=max(max(frvrdin))
[X,Y,Z]=size(frvrdin)
[o,i]=find(frvrdin==mxshirin)
xo=size(o)
xi=size(i)
如果 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()
在两个以上的维度上,所以使用 find
和 ind2sub
:
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
进入第三轮。