asp*_*sia 4 matlab matrix conditional-statements
我试图得到一个逻辑矩阵作为特定于M(:,i)原始矩阵的每一列的条件的结果,基于i向量中相同索引的值N,即N(i).
我在网上看过这个,但找不到任何类似的东西.必须有一个简单而干净的方法来做到这一点.
M =
3 -1 100 8
200 2 300 4
-10 0 0 400
N =
4 0 90 7
Run Code Online (Sandbox Code Playgroud)
我希望的解决方案是,对于每一列M(:,i),值小于N(i):
1 1 0 0
0 0 0 1
1 0 1 0
Run Code Online (Sandbox Code Playgroud)
这是一个标准用例bsxfun:
O = bsxfun(@lt, M, N)
Run Code Online (Sandbox Code Playgroud)
这里@lt调用"小于"函数,即它是<操作符的函数句柄.bsxfun然后,N通过将函数@lt应用于每一行M和整行,将沿着其单一维度"扩展" N.
请注意,您可以使用for-loop 轻松实现相同的功能:
O = zeros(size(M));
for row = 1:size(M,1)
O(row,:) = M(row,:) < N;
end
Run Code Online (Sandbox Code Playgroud)
或者使用repmat:
O = M < repmat(N, size(M,1), 1);
Run Code Online (Sandbox Code Playgroud)
但在MATLAB中,bsxfun通常效率最高.