
Using fprintf for complex numbers
139 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Savannah Roemer
el 27 de Ag. de 2019
Respondida: Steven Lord
hace alrededor de 4 horas
Hi, I have
Z1= sqrt(3) * exp((pi*i)/4)
Z2= 2 * exp((pi*i)/6)
Z3= sqrt(3) * exp((3*pi*i)/4)
Z4= 2 * exp(pi*i)
Z5= 2 * exp(-pi*i)
And I would like something like
Real Complex
Z1 1.2247 + 1.2247i
Z2 1.7321 + 1.0000i
Z3 -1.2247 + 1.2247i
Z4 -2.0000 + 0.0000i
Z5 -2.0000 - 0.0000i
Using fprintf, I would think...
Thanks for your help!
0 comentarios
Respuesta aceptada
KALYAN ACHARJYA
el 27 de Ag. de 2019
Editada: KALYAN ACHARJYA
el 27 de Ag. de 2019
One Way:
Z1= sqrt(3) * exp((pi*i)/4)
fprintf('%f + %fi',real(Z1),imag(Z1))
More:
Z1= sqrt(3) * exp((pi*i)/4);
Z2= 2 * exp((pi*i)/6);
Z3= sqrt(3) * exp((3*pi*i)/4);
Z4= 2 * exp(pi*i);
Z5= 2 * exp(-pi*i);
disp(' Real Complex')
fprintf('\nZ1 %.4f + %.4fi',real(Z1),imag(Z1));
fprintf('\nZ2 %.4f + %.4fi',real(Z2),imag(Z2));
fprintf('\nZ3 %.4f + %.4fi',real(Z3),imag(Z3));
fprintf('\nZ4 %.4f + %.4fi',real(Z4),imag(Z4));
fprintf('\nZ5 %.4f + %.4fi',real(Z5),imag(Z5));
Result:

2 comentarios
KALYAN ACHARJYA
el 27 de Ag. de 2019
No Savannah, those MPVs are my Guru here.. continually they are teaching me .
Specially @Walter Roberson, @Image Analyst @Madhan @Jan .and...many more....
Anyway thanks for your kind words!
Más respuestas (4)
Adam Danz
el 24 de Nov. de 2023
Editada: Adam Danz
el 24 de Nov. de 2023
a = -2*sqrt(-3)+5/3
num2str(a)
num2str(a, 2) % specify precision
You would enter this as a string in fprintf
ijstr = num2str(a,3);
fprintf('%s %s', 'Z1', ijstr)
Note that this method may return strings in undesired formats such as,
num2str(160, 2)
5 comentarios
marcel hendrix
el 30 de Nov. de 2024
Thanks, I was on the verge of submitting a bug report...
Processing matrix arguments by column has another surprise: if one prints a matrix to a file for subsequent processing in another program, the matrix will look transposed to the post-processor. I can say from experience that this bug (in the post-processor and caused by the reverse side of the keyboard) can be very hard to find ...
Walter Roberson
el 30 de Nov. de 2024
Note that you can avoid the c{:} step if you pass compose a string scalar format instead of a character vector format.
p = [ 9.542130347090435e-01 + 1.371703909876786e-01i
9.542130347090435e-01 - 1.371703909876786e-01i ];
c = compose("%s", num2str(p,10))
fprintf('%s\n', c)
And that leads to the more compact
fprintf('%s\n', compose("%s", num2str(p,10)))
Walter Roberson
el 27 de Ag. de 2019
Editada: Walter Roberson
el 27 de Ag. de 2019
fprintf() always ignores imaginary components of numbers. You need to ask to output the real() and imaginary() components separately,
fprintf('%2s %7.4f %+7.4fi\n', 'Z1', real(Z1), imag(Z1))
0 comentarios
Dean
hace alrededor de 6 horas
x = [
2.34 + 4.35i
6.34 + 4.32i
7.45 + 3.21i
8.45 + 9.23i
];
fprintf('%0.2f + i%0.2f\r', [real(x) imag(x)].');
0 comentarios
Steven Lord
hace alrededor de 5 horas
You may want to use + in the format specifier.
A = [3+4i, 5, 6-7i]
fprintf("%d%+di\t", [real(A); imag(A)])
0 comentarios
Ver también
Categorías
Más información sobre Data Type Conversion en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!