필터 지우기
필터 지우기

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

조회 수: 4 (최근 30일)
parslee
parslee 2021년 11월 12일
편집: James Tursa 2021년 11월 12일
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
James Tursa
James Tursa 2021년 11월 12일
편집: James Tursa 2021년 11월 12일
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?

댓글을 달려면 로그인하십시오.

답변 (2개)

Jon
Jon 2021년 11월 12일
편집: Jon 2021년 11월 12일
x = -0.0115+0.0059i
xnew = real(x) + abs(imag(x))*i
  댓글 수: 1
Jon
Jon 2021년 11월 12일
편집: Jon 2021년 11월 12일
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

댓글을 달려면 로그인하십시오.


Walter Roberson
Walter Roberson 2021년 11월 12일
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"

카테고리

Help CenterFile Exchange에서 Numbers and Precision에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by