extracting only real numbers (not real part) from a vector

I have these 2 vector, phi, and psi.
both have complex number from the 1st to 4864th element, then from 4865th to the last real number.
I'd like to turn phi into a vector, let's say a, and psi, b, which contains only the valus that are real.
Like this the attached files:

3 Comments

a = phi(imag(phi) == 0);
b = psi(imag(psi) == 0);
However, I would suspect that you need more like
mask = imag(phi) == 0 & imag(psi) == 0;
a = phi(mask);
b = psi(mask);
"both have complex number from the 1st to 4864th element,"
That is not correct: psi and phi both start with 0, which is not a complex number.
"both have complex number from the 1st to 4864th element, then from 4865th to the last real number."
No, the first element (after the very first) with imaginary part 0 is element 4858.

Sign in to comment.

 Accepted Answer

vectors = [phi, psi];
vectors(4865:end, :)

3 Comments

thank, but in this case real numbers happen to start at 4865, they could start before or laterr depending on the case
phi_psi = [phi, psi];
ix = imag([phi, psi]) == 0;
idx = find(all(ix, 2), 1);
Wanted = phi_psi(idx : end, :)

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics and Optimization in Help Center and File Exchange

Products

Release

R2014b

Community Treasure Hunt

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

Start Hunting!