Matlab中行矩阵与向量的快速比较方法
我在Matlab中有一个矩阵Matlab中行矩阵与向量的快速比较方法,matlab,Matlab,我在Matlab中有一个矩阵a,维度为MxN,两行向量B和D,维度为1xN。我想知道将B与A的每一行进行比较的最快方法。所有元素都是1或0 具体来说, A=[ 1 1 1; 1 1 0; 1 0 1; 1 0 0; 0 1 1; 0 1 0; 0 0 1; 0 0 0]; B=[1 1 1
a
,维度为MxN
,两行向量B
和D
,维度为1xN
。我想知道将B
与A
的每一行进行比较的最快方法。所有元素都是1
或0
具体来说,
A=[ 1 1 1;
1 1 0;
1 0 1;
1 0 0;
0 1 1;
0 1 0;
0 0 1;
0 0 0];
B=[1 1 1];
D=[1 0 0]
我想用C(I)=1构建维度Mx1
的矩阵C
,如果
B(1,1)>=A(i,1)
和B(1,2)>=A(i,2)
<代码>B(1,N)>=A(i,N)
和
D(1,1)当然,最快的方法(在代码行数和计算时间上)当然是使用bsxfun
就你而言:
tmp = bsxfun(@ge, A, B);
res = all(tmp,2);
这就是你要寻找的。请注意,bsxfun
会自动处理不同大小的输入,就像在您的示例中一样,因此这里不需要使用repmat
或矩阵乘法
编辑
新的约束条件也有同样的想法。请注意a当然,最快的方法(在代码行数和计算时间上)当然是使用bsxfun
就你而言:
tmp = bsxfun(@ge, A, B);
res = all(tmp,2);
这就是你要寻找的。请注意,bsxfun
会自动处理不同大小的输入,就像在您的示例中一样,因此这里不需要使用repmat
或矩阵乘法
编辑
新的约束条件也有同样的想法。请注意,aThank you,我已经详细阐述了我的问题。你能看一看吗?嘿,回答后不要这样改变问题。请问另一个问题。无论如何,我会编辑我的答案。谢谢,我已经详细阐述了我的问题。你能看一看吗?嘿,回答后不要这样改变问题。请问另一个问题。我还是要编辑我的答案。
tmp = bsxfun(@ge, A, B);
res = all(tmp,2);
tmp = bsxfun(@lt, A, B) && bsxfun(@lt, D, A);
res = all(tmp,2);