Simplify symbolic division abs(Z)/Z
Show older comments
In a symbolic expression with syms Z complex, Matlab does not simplify simplify(abs(Z)^2/Z) to conj(Z) but it simplifies simplify(abs(Z)^2/conj(Z)) to Z. Is it possible to make sure that simplify(abs(Z)^2/Z) yields conj(Z)? I'm working with R2023b. Thanks!
Answers (2)
Use z*z' instead of abs(z)^2:
syms z
u = z*z'/z
2 Comments
Luciano Boglione
on 2 Nov 2023
Then I think you are out of luck. Why do you want to simplify ? Just for optical reasons ?
This will work, but it's the sledge hammer:
syms z
u = abs(z)^2/z;
u = subs(u,abs(z)^2,z'*z)
syms z
syms zr zi real
u = abs(z)^2/z
us = simplify(subs(u, z, zr + 1i*zi))
After which you would need to substitute conj(z) for zr-zi*1i
However it is probably easiest to do something like
syms z
u = abs(z)^2/z + 5*z^2 - 3*z + 2
subs(u, abs(z)^2/z, conj(z))
If you have something more complex, where you have the general pattern abs(EXPRESSION)^2/EXPRESSION then you could proceed by using mapSymType ... but it does get complicated if you have terms such as (x*abs(x + y)^2)/(y*(x + y)) then it can be complicated to properly detect a match.
Categories
Find more on Symbolic Math Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
