How do you take the absolute value of only the complex number?
조회 수: 4 (최근 30일)
이전 댓글 표시
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
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개)
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"
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Numbers and Precision에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!