
Using fprintf for complex numbers
조회 수: 128 (최근 30일)
이전 댓글 표시
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
채택된 답변
KALYAN ACHARJYA
2019년 8월 27일
편집: KALYAN ACHARJYA
2019년 8월 27일
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
KALYAN ACHARJYA
2019년 8월 27일
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!
추가 답변 (2개)
Adam Danz
2023년 11월 24일
편집: Adam Danz
2023년 11월 24일
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
marcel hendrix
2024년 11월 30일
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
2024년 11월 30일
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
2019년 8월 27일
편집: Walter Roberson
2019년 8월 27일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Data Type Conversion에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!