【发布时间】:2017-03-17 20:09:50
【问题描述】:
我在 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 if 构造一个维度为Mx1 的矩阵C
B(1,1)>=A(i,1) 和 B(1,2)>=A(i,2) 和 ...B(1,N)>=A(i,N) 和
D(1,1)<=A(i,1) 和 D(1,2)<=A(i,2) 和 ...D(1,N)<=A(i,N) 和
B(:) 不同于 A(i,:) 和
D(:) 不同于A(i,:)
在示例中
C=[0;1;1;0;0;0;0;0];
一种方法可以是
lownew=repmat(D,size(A,1),1);
greatnew=repmat(B,size(A,1),1);
C=(sum(lownew<=A,2)==N & sum(greatnew>=A,2)==N & sum(lownew==A,2)~=N & sum(greatnew==A,2)~=N);
有没有更快的方法?我的真实矩阵A 的维度大于10^6。
【问题讨论】:
标签: matlab