matlab - 基于与向量相同索引的列的条件

标签 matlab matrix conditional-statements

我正在尝试根据相同索引的值,根据原始矩阵的每一列 M(:,i) 的特定条件,得到一个逻辑矩阵向量N中的i,即N(i)

我在网上查过这个,但找不到任何类似的东西。必须有一种简单干净的方法来执行此操作。

M =

     3    -1   100     8
   200     2   300     4
   -10     0     0   400

N =

     4     0    90     7

我想要的解决方案是,对于 M(:,i) 的每一列,值小于 N(i):

     1     1     0     0
     0     0     0     1
     1     0     1     0

最佳答案

这是 bsxfun 的标准用例:

O = bsxfun(@lt, M, N)

在这里@lt正在调用“小于”函数,即它是 < 的函数句柄运算符(operator)。 bsxfun然后将“扩展”N通过应用函数 @lt 沿其单例维度到 M 的每一行和整个N .

请注意,您可以使用 for 轻松实现相同的目的。 -循环:

O = zeros(size(M));
for row = 1:size(M,1)
    O(row,:) = M(row,:) < N;
end

或使用 repmat :

O = M < repmat(N, size(M,1), 1);

但在 MATLAB 中 bsxfun通常是最有效的。

关于matlab - 基于与向量相同索引的列的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33646167/

相关文章:

arrays - 创建指标矩阵

algorithm - 如何根据强度值创建蒙版或检测图像部分?

matlab - 将条形图绘制为表中 for 循环中的子图,以便它在每次迭代时更新行元素

c# - Matlab调用C#或C并控制NI DAQ

python - 在 Python/Numpy 中优化许多矩阵运算

c++ - 重载二维数组运算符并抛出异常

c++ - Switch 语句而不是多个嵌套的 if - else?

python - 使用 numpy 进行矩阵乘法

C 错误 : Expected expression before int

python - 如何在for循环中保留变量而其他条件语句不会改变它