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

31 views (last 30 days)
Paul Rogers on 18 Jul 2020
Commented: Walter Roberson on 18 Jul 2020
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:

Walter Roberson on 18 Jul 2020
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;
Paul Rogers on 18 Jul 2020
nope
Walter Roberson on 18 Jul 2020
"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.

madhan ravi on 18 Jul 2020
vectors = [phi, psi];
vectors(4865:end, :)

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

R2014b

### Community Treasure Hunt

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

Start Hunting!