我正在尝试根据相同索引的值,根据原始矩阵的每一列 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/