我试图找到矩阵中每行的最小值,不包括这些行中的特定元素。
特别是在给定的行中,我已经预先计算了我想要包含在 valid(i,:)
中的那些元素。
执行此操作的正确方法是什么,以下是我想到的选项:
for i = 1:n
res(i) = min(x(i, 1, valid(i,:)), [], 3);
...
end
根据我对 matlab 的了解,这会更有效:
res = min(x(:, 1, valid), [], 3);
但是,这只会将单个过滤器应用于第三维......
最佳答案
您可以使用accumarray
来做到这一点如下。不确定它是否会比您的答案更快:
[~, jj] = find(valid); % column indices, to be used as grouping variable
res = accumarray(jj, x(valid), [size(x,2) 1], @min, NaN); % NaN used as fill value
关于matlab - 找到元素子集最小值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57396509/