Converting Complex numbers in Polar/Cartesian form to exponential form.

28 Ansichten (letzte 30 Tage)
GeorgeH
GeorgeH am 20 Mär. 2015
Beantwortet: Travis Kent am 17 Dez. 2020
I was wondering if anybody knows a way of having matlab convert a complex number in either polar or cartesian form into exponential form and then actually display the answer in the form ' z=re^itheta'
I know the functions cart2pol and pol2cart can be used to convert between cartesian and polar form but i am yet to find a way to display an answer in exponential form and was wondering if this was indeed possible at all
thanks

Antworten (2)

Travis Kent
Travis Kent am 17 Dez. 2020
i know this is years late but i just did a similar thing; *i did not author the code to convert rectangular to polar, just the part to answer your question to display the output in exponential. you would have to alter it to either accept rectangular or cartesean, id assume by input() function
function[]=r2p(z)
% z=a+ib where a is real part & b is imaginary part
% magnitude=sqrt(a^2+b^2)
% angle=inver_tan(b/a)
a=real(z);
b=imag(z);
magnitude=sqrt(a^2+b^2);
disp('magnitude:')
disp(magnitude);
if a>0 && b>0
angle=(atan(abs(b/a)))*180/pi;
disp('angle in degrees:')
disp(angle);
elseif a<0 && b>0
angle=180-((atan(abs(b/a)))*180/pi);
disp('angle in degrees:')
disp(angle);
elseif a<0 && b<0
angle=180+((atan(abs(b/a)))*180/pi);
disp('angle in degrees:')
disp(angle);
elseif a>0 && b<0
angle=-((atan(abs(b/a)))*180/pi);
disp('angle in degrees:')
disp(angle);
end
r="e^i";
z="Z="
p=[z,magnitude,r,angle];
out=sprintf('%s',string(p));
fprintf(out)
end
say r2p(10+10i) is entered in command window it outputs:
>>r2p(10+10i)
magnitude:
14.1421
angle in degrees:
45
Z=14.1421e^i45

Star Strider
Star Strider am 20 Mär. 2015
I’m not exactly certain, but as I understand it, you want phasor notation.
This works:
phasr = @(z) [abs(z) angle(z)];
Z = 1 + 1i*1;
ph = phasr(Z);
retheta = ph(1)*exp(1i*ph(2))
  2 Kommentare
GeorgeH
GeorgeH am 20 Mär. 2015
this still outputs an answer in complex number form, what i need from matlab is my answer to be outputted in the exponential form
i.e (8-7i) would be converted to '10.6e^-0.7i'
if at all possible
Star Strider
Star Strider am 20 Mär. 2015
Try this:
phasr = @(z) [abs(z) angle(z)];
Z = 8 + 1i*7;
ph = phasr(Z);
retheta = sprintf('%.1f %+.1fi', ph(1), ph(2))
It produces:
retheta =
10.6 +0.7i

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by