Matlab 如何使用max或min返回的多维索引?
在matlab中Matlab 如何使用max或min返回的多维索引?,matlab,multidimensional-array,indexing,max,complex-numbers,Matlab,Multidimensional Array,Indexing,Max,Complex Numbers,在matlab中 [M,I] = max(A, [], dim) 返回最大值以及指定维度上这些最大值的索引。当A是多维数组时,变量I被证明是一个多维数组,其维度与A相同,除了dim维度设置为1。我的问题是如何使用索引多维数组I从A返回最大值 为了提供一个特定的用例,我想获得在维度dim上具有最大实部的复数,而a可能包含复数 我可以用 [M,I] = max(real(A), [], dim) 求最大实部及其指数。但是,我如何得到这些指数的原始复变量呢?我特别感兴趣的是A有两个以上维度的情
[M,I] = max(A, [], dim)
返回最大值以及指定维度上这些最大值的索引。当A是多维数组时,变量I被证明是一个多维数组,其维度与A相同,除了dim维度设置为1。我的问题是如何使用索引多维数组I从A返回最大值
为了提供一个特定的用例,我想获得在维度dim上具有最大实部的复数,而a可能包含复数
我可以用
[M,I] = max(real(A), [], dim)
求最大实部及其指数。但是,我如何得到这些指数的原始复变量呢?我特别感兴趣的是A有两个以上维度的情况 如果
dim
是任意的,则最容易将其移动到第一个维度(使用),以简化后面的索引:
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
检查是否有效:使用a
non-complex(因此real
什么都不做)并将值与M
进行比较:
>> A = randn(2,3,4);
dim = 2;
Ap = permute(A, [dim 1:dim-1 1+dim:ndims(A)]);
[M,I] = max(real(Ap), [], 1);
ind = I + reshape(0:size(Ap,1):numel(Ap)-1, size(I));
values = Ap(ind);
values == M
ans(:,:,1) =
1 1
ans(:,:,2) =
1 1
ans(:,:,3) =
1 1
ans(:,:,4) =
1 1
这太难看了:p