MATLAB Answers

0

Pull a conditional subset of a matrix

Asked by Andres Serrano on 2 Nov 2018
Latest activity Commented on by Walter Roberson
on 2 Nov 2018
Hi guys I have a matrix and I want to pull a subset matrix but only with the numbers whose last digit is one. EX a= 00110, 01000, 01011, 01101. thus b= 01011, 01101

  4 Comments

Show 1 older comment
thanks Madhan. I have a= 00110, 01000, 01011, 01101. I want to get b= 01011, 01101. Matrix b is all the vectors from matrix a whose last digit=1 (when the last digit of a vector in matrix a=0 the vector is not included in matrix b).
Are the entries for the first row '00110' which is to say characters? Are they [0 0 1 1 0] which is to say distinct decimal numbers? Are they 00110 decimal, which would show up as 110, decimal one hundred and ten?
Hi Walter, you are correct, they are characters. '00110' is the first row. '01000' second row, etc...

Sign in to comment.

2 Answers

Answer by Walter Roberson
on 2 Nov 2018

a(a(:,end)=='1',:)

  2 Comments

thanks Walter i figured out the line based in your answer. a(a(:,5)==1,:)
You said the entries were characters, and '1' will not == to 1 .
You also specifically wanted the last digit, but if your array were wider than 5 digits then a(:,5) would not be the last digit.
If your values are numeric instead of character, then a(a(:,end)==1,:)

Sign in to comment.


Answer by Fulden Buyukozturk on 2 Nov 2018

If a is a matrix of characters, you can do:
a= ['00110'; '01000'; '01011'; '01101'];
i = strfind(a(:,end)', '1');
b = a(i,:);

  0 Comments

Sign in to comment.