matlab - 找到元素子集最小值的有效方法

标签 matlab

我试图找到矩阵中每行的最小值,不包括这些行中的特定元素。

特别是在给定的行中,我已经预先计算了我想要包含在 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/

相关文章:

matlab - 在静默模式下从 CMD 激活 winrar

matlab - 线性回归中的梯度下降出错

matlab - MATLAB 中矩阵的分块向量求和

matlab - 查找 NaN 值是元胞数组

performance - 矩阵乘法中的 bsxfun 实现

matlab - 使轴和刻度线优先于绘制的线

linux - MATLAB 无法使用网络摄像头

OpenCV 中的 Matlab 最小等效项

Matlab打印垫

image - 使用Matlab将图像打印为无边距的pdf