How do you take the absolute value of only the complex number?
13 views (last 30 days)
Show older comments
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 Comment
James Tursa
on 12 Nov 2021
Edited: James Tursa
on 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?
Answers (2)
Walter Roberson
on 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 Comments
See Also
Categories
Find more on Numbers and Precision in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!