Column-wise AND operation in all column combinations of two matrices
7 views (last 30 days)
Show older comments
Giorgos Papakonstantinou
on 24 Feb 2014
Answered: Giorgos Papakonstantinou
on 24 Feb 2014
Given matrix a of size MxN and matrix b of size MxL I want to get a matrix C of size M x(N*L) which contains the column-wise logical operation AND of all combinations of columns of matrix a and matrix b.
a = [1 0 0
1 0 0
1 0 0
1 0 0
0 1 0
0 1 0
0 1 0
0 1 0
0 0 1
0 0 1
0 0 1
0 0 1];
b= [0 0 1
0 1 0
1 0 0
0 0 1
0 1 0
1 0 0
0 0 1
0 1 0
1 0 0
0 0 1
0 1 0
1 0 0];
C=[];
for ii=1:size(a, 2)
for jj=1:size(b, 2)
C = [C b(:,jj) & a(:,ii)];
end
end
I am searching for an alternative syntax of the above loops. Thank you!
1 Comment
Jos (10584)
on 24 Feb 2014
A matrix of size MxN, means M rows and N columns, rather than the other way around ...
Accepted Answer
Iain
on 24 Feb 2014
This should do it:
C = bsxfun(@and, a, reshape(b,[12,1,3]);
theresult = C(down,column_a,column_b);
0 Comments
More Answers (3)
Azzi Abdelmalek
on 24 Feb 2014
out=reshape(repmat(a,size(b,2),1),size(a,1),[]) & repmat(b,1,size(a,2))
0 Comments
Jos (10584)
on 24 Feb 2014
% Small example: two logical arrays
A = rand(3,3) > .25
B = rand(2,3) > .25
% general engine
[ib,ia] = ndgrid(1:size(B,1), 1:size(A,1))
C = A(ia(:),:) & B(ib(:),:)
0 Comments
See Also
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!