Matlab数组的维度最大坐标

时间:2017-05-22 04:22:34

标签: arrays matlab

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

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

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

2 个答案:

答案 0 :(得分:0)

假设您的矩阵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);

答案 1 :(得分:0)

s = size(A);
[v,ii] = max(reshape(A,[],s(3)));
[i1 j1 ] = ind2sub(s(1:2),ii);
out = [v;i1;j1;1:s(3)]';