How can I use the multidimensional index returned by max or min?
在matlab中,
返回最大值,以及沿着指定尺寸dim的这些最大值的索引。当A是多维数组时,变量I变成与A具有相同维的多维数组,除了将dim维度设置为1。我的问题是如何使用索引多维数组I从A取回最大值。 。
要提供一个特定的用例,我想在A可以包含复数的情况下获得沿维度dim的最大实部的复数。
我可以使用
以获取最大的实部及其索引。但是,如何在这些索引处获得原始的复数变量?我对A的尺寸大于2的情况特别感兴趣。
如果
1 2 3 4 5 6 | A = randn(2,3,4)+1j*randn(2,3,4); %// example data dim = 2; %// dimension along which to maximize Ap = permute(A, [dim 1:dim-1 1+dim:ndims(A)]); %// move dim to 1st dim [M,I] = max(real(Ap), [], 1); %// minimize function of Ap along 1st dim ind = I + reshape(0:size(Ap,1):numel(Ap)-1, size(I)); %// build linear indices from I values = Ap(ind); %// index into Ap to get minimizing values |
检查是否可行:使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |