- Use another matrix dimension to keep real and imaginary parts separate
- Define your own complex number object, that has the properties you outline above.
why is 1+ nan*1i = NaN + NaNi ?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Patrick Mboma
am 27 Nov. 2015
Kommentiert: Patrick Mboma
am 28 Nov. 2015
Dear all,
I am trying to figure out how to store some information using complex numbers and retrieving that information later on.
For an operation like
1+nan*1i,
I would like to be able to retrieve "1" by doing
real(1+nan*1i)
and retrieve "nan" by doing
imag(1+nan*1i).
The first case does not work because matlab stores 1+ nan*1i as NaN + NaNi. Is there any workaround to this?
Thanks
0 Kommentare
Akzeptierte Antwort
the cyclist
am 27 Nov. 2015
I don't envision any workaround that would specifically make NaNs work. Speaking mathematically very loosely, the NaN in your original expression could be a "complex NaN", such that the NaN-ness leaks over to the real part.
I can imagine, without deep thinking, a couple workarounds, that are annoying in their own way, but might work in your particular situation.
0 Kommentare
Weitere Antworten (1)
Walter Roberson
am 27 Nov. 2015
A = complex(1,nan)
real(A), imag(A)
B = A
However if you were to do
2*A
then you would get complex(NaN, NaN). You can use complex() to force unusual structures such as complex(5,0) but any arithmetic on it is going to demote it to complex(NaN, NaN)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!