如何在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()
的自动定位输出,所以使用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
是第三个维度。