I want to know how this code is working.

1 view (last 30 days)
Neal
Neal on 17 Jul 2018
Commented: Neal on 18 Jul 2018
I am new to MATLAB. To improve my skills I am practicing with simple problems. One problem is extracting even and odd numbers from a vector.For e.g. I wrote this code to extract odd and even numbers from a vector.
A=linspace(1,1000,1000);
Odd=[];
Even=[];
for i=1:length(A)
if rem(A(i),2)~=0;
Odd=[Odd;A(i)];
else
Even=[Even;A(i)];
end
end
A colleague pointed out that there is an even easier way of doing this..(there could be many)
Odd=A(rem(A(:),2)~=0);
Even=A(rem(A(:),2)==0);
I don't understand how this code works. The part rem(A(:),2)~=0 gives a logical array. How does index of logical array ultimately give odd and even numbers?

Accepted Answer

Stephan
Stephan on 17 Jul 2018
Hi,
lhe logical array inside the A(...) gives back all the values where the index represented by the logical array is true. That is why this works.
Best regards
Stephan
  1 Comment
Neal
Neal on 18 Jul 2018
Thank you. The link you provided is really what I wanted to know.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!