我需要找到一个在给定维度中具有最大绝对值的元素值(在我的情况下是第二维)。对于2D矩阵,很容易
A=normrnd(0,1,60,150);
[~,idx]=max(abs(A),[],2);
MAX=A(sub2ind(size(A), 1:size(A,1), idx'));
但是对于三维情况我使用sub2ind()
函数时遇到问题。 我知道这是假问题,但我实在找不到解决方案 (可能是因为星期五)
for循环的工作代码:
B=normrnd(0,1,60,150,450);
[~,idx]=max(abs(B),[],2);
MAX=nan(size(B,1),size(B,3));
for iDim1=1:size(B,1)
for iDim3=1:size(B,3)
[~,idx]=max(abs(B(iDim1,:,iDim3)));
MAX(iDim1,iDim3)=B(iDim1,idx,iDim3);
end %iDim3
end %iDim1
您能为此循环提供sub2ind()
或其他优雅解决方案吗?
答案 0 :(得分:1)
逻辑上,这就是你想要的。 "在给定维度中具有最大绝对值的元素的值(在我的情况下是第二维)"
试验>> A = normrnd(0,1,[2,3,3]);
试验>> [〜,IDX] = MAX(ABS(A),[],2);
试验>> MAX1 = A(idx)