我有一个3D矩阵d,我想找到沿第三维的有符号最小值。目前,我使用以下代码
tmp = abs(d);
[row, col]=ndgrid(1:size(d,1),1:size(d,2));
[v,ind] = min(tmp,[],3);
index = row + size(d,1)*size(d,2)*(ind-1)+ size(d,1)*(col-1); %turn the ind to index
dm = d(index); %get the signed minimum value
以上代码效率不高。有谁知道更好的选择?谢谢!
答案 0 :(得分:1)
而不是创建row
和col
值的网格,以将ind
转换为可用于索引回d
的索引,您可以使用 min
的第一个输出,其中包含沿第三维的最小值。
dm = min(abs(d), [], 3);