tri*_*can 8 matlab multidimensional-array
我正在尝试找到一个二维数组,表示3d数组中第三维的最小值
a = floor(rand(10,10,3).*100); % representative structure
b = min(a,[],3); % this finds the minimum but also includes 0
Run Code Online (Sandbox Code Playgroud)
我试过用:
min(a(a>0),3)
Run Code Online (Sandbox Code Playgroud)
但这不正确?我想我可以对a的第三维进行排序,然后在1:depth-1中找到最小值 - 但这似乎不是最有效的方法吗?
有什么想法吗?
问题是a(a>0)
返回一个线性数组,所以最终会得到一个最小值,而不是带有最小值的2D数组.
采用最小非零值的最安全方法是用它们掩盖它们Inf
,这样零点不会干扰最小值的计算.
tmp = a;
tmp(tmp==0) = Inf;
b = min(tmp,[],3);
Run Code Online (Sandbox Code Playgroud)