Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中行矩阵与向量的快速比较方法_Matlab - Fatal编程技术网

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

我在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];
  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);