Matlab 数组的维数最大值的坐标



我有 5 维数字数组。目标是找到沿第 5 维的最大值及其坐标。我使用

[x,y] = max(A,[],5);

理想情况下,我希望x == A(y),但这似乎不会发生。我需要了解如何将y转换为坐标数组z以便x == A(z).就我而言,使用 find + 循环的成本很高,因为矩阵很大。

假设你的矩阵A的维度为 (m,n,o) 。现在,您有沿3rd维度的最大条目索引(以 y 为单位(和相应的最大值(以 x 为单位(。您可以通过以下代码访问最大值-

z = (1:m*n)' + (y(:)-1)*(m*n); % linear index of these locations in full array
final_matrix = reshape(A(z),m,n);

它可以很容易地扩展到 5 维矩阵。

尝试此代码进行 5 维-

[x,y] = max(A,[], 5);
z = (1:m*n*o*p)' + (y(:)-1)*(m*n*o*p); 
final_matrix = reshape(A(z),m,n,o,p);
s = size(A);
[v,ii] = max(reshape(A,[],s(3)));
[i1 j1 ] = ind2sub(s(1:2),ii);
out = [v;i1;j1;1:s(3)]';

最新更新