How to filter a binary matrix through a binary vector?

4 views (last 30 days)
Say I have a binary vector E and a binary matrix S,
E = [0 1 1 0 0]
S = [1 1 0 1 0; 1 1 1 1 1; 1 0 0 1 1]
I'm looking to find a matrix S_E that 'filters' the matrix S through the vector E, such that the new filtered matrix S_E only contains the placeholder values of the matrix S where there are 1's in the matrix E. So the matrix S_E would look like,
S_E = [1 0 ; 1 1 ; 0 0]
Is there any way to implement this?? Any help would be greatly appreciated.
Thanks!

Accepted Answer

Rik
Rik on 30 Aug 2018
Edited: Rik on 30 Aug 2018
Here are two ways to do this:
E = [0 1 1 0 0];
S = [1 1 0 1 0; 1 1 1 1 1; 1 0 0 1 1];
S_E=S(:,logical(E));
E = [0 1 1 0 0];
S = [1 1 0 1 0; 1 1 1 1 1; 1 0 0 1 1];
E_expanded=repmat(logical(E),size(S,1),1);
S_E=reshape(S(E_expanded),[],sum(E));

More Answers (0)

Categories

Find more on Resizing and Reshaping Matrices 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!