How do you take the absolute value of only the complex number?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have a matrix of 128x256 filled with real and complex number; ex. -0.0115+0.0059i.
How do I take the absolute value of only the complex number so that it becomes -0.0115 + abs(0.0059i)?
I would like to apply this to all the cells in the matrix.
1 Commento
James Tursa
il 12 Nov 2021
Modificato: James Tursa
il 12 Nov 2021
Did you really mean abs(0.0059i) with the i inside the abs( ) function as written? Or did you just mean abs(imag coeff)*i?
Risposte (2)
Walter Roberson
il 12 Nov 2021
NewArray = complex(real(YourArray), abs(imag(YourArray)));
or
NewArray = real(YourArray) + 1i .* abs(imag(YourArray));
Using complex() should be slightly more efficient.
There is a very slight difference in the results between the two: In the case where the imaginary components of the array are all 0, then the + 1i .* form would be adding 1i .* 0 which would all vanish and the end result in NewArray would be marked as entirely real-valued. But if you use complex() then even if the final result has all-zero in the imaginary component, the result will be marked as complex, and will have storage allocated for the complex part.
For most purposes, whether the all-zero imaginary part is stored or not makes no difference. But it can make a difference when you are calling library routines that are expecting a complex array, especially if you are expecting them to update the array "in-place"
0 Commenti
Vedere anche
Categorie
Scopri di più su Numbers and Precision in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!