How do you take the absolute value of only the complex number?

12 vues (au cours des 30 derniers jours)
parslee
parslee le 12 Nov 2021
Modifié(e) : James Tursa le 12 Nov 2021
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 commentaire
James Tursa
James Tursa le 12 Nov 2021
Modifié(e) : James Tursa le 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?

Connectez-vous pour commenter.

Réponses (2)

Jon
Jon le 12 Nov 2021
Modifié(e) : Jon le 12 Nov 2021
x = -0.0115+0.0059i
xnew = real(x) + abs(imag(x))*i
  1 commentaire
Jon
Jon le 12 Nov 2021
Modifié(e) : Jon le 12 Nov 2021
This will work for a m by n matrix too.
X = randn(128,256) + randn(128,256)*i;
Xnew = real(X) + abs(imag(X))*i

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 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"

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by