How do I print complex number a+ib upto 6 decimal place in a loop.
조회 수: 2 (최근 30일)
이전 댓글 표시
I have a complex (double) matrix st_matrix containing numbers in the form of a+ib. Now I want to print the values in a text file.
for p=1:101; % 101 is the number of rows.
s= st_matrix(p,:);
count=fprintf(fid ,'%.12f%+.10fli' , real(s), imag(s));
count=fprintf(fid,'\n');
end
My Expected output should be like :
1.96034545799687e-05 + 0.000756105063919229i -8.32404312346182e-05 + 0.000565437183372445i -1.54903072995014e-05 + 0.000410916702926380i
1.95824745829973e-05 + 0.000756115973057457i -8.44930558128954e-05 + 0.000564346616515616i -1.66587028148237e-05 + 0.000410464815615681i
1.95614932804376e-05 + 0.000756126810264354i -8.57391651447123e-05 + 0.000563240328264741i -1.78231150975604e-05 + 0.000409974438469278i
1.95405106806012e-05 + 0.000756137575538325i -8.69787095451668e-05 + 0.000562118367246730i -1.89831071531749e-05 + 0.000409445723268375i
1.95195267918012e-05 + 0.000756148268877799i -8.82116401021374e-05 + 0.000560980783378047i -2.01382434159039e-05 + 0.000408878835146654i
But the above code gives output as :
0.000019603455-0.0000832404j -0.000015490307+0.0000488314j 0.000022704867+0.0000323502j
0.000019582475-0.0000844931j -0.000016658703+0.0000491398j 0.000022313754+0.0000310167j
0.000019561493-0.0000857392j -0.000017823115+0.0000494415j 0.000021904664+0.0000296515j
0.000019540511-0.0000869787j -0.000018983107+0.0000497374j 0.000021478198+0.0000282570j
You can see that the real part of next element becomes of the complex part of the previous element. Any help would be appreciated.
댓글 수: 0
채택된 답변
Walter Roberson
2018년 3월 22일
count=fprintf(fid ,'%.12f%+.10fli' , [real(s), imag(s)].'); %transpose is important
댓글 수: 2
Walter Roberson
2018년 3월 22일
fprintf(fid ,'%.12f%+.10fj ' , [real(s); imag(s)]);
fprintf(fid, '\n');
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!