如果dim
是任意的,最简单的方法是为了简化索引移回第一维(与permute
):
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
不复杂(所以real
什么都不做),并比较values
与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
这是如此的丑陋:对 – excaza
@excaza只有格式:-) –