我有一个复数的matlab输出,其中' modTrace'包含复数。将我的输出写入名为' 3pt.txt'的文件中我写了以下内容:
modTrace
fileID = fopen('3pt.txt','w');
fprintf ( fileID,'%e+%ei\n',real ( traces ), imag ( traces ) );
fclose(fileID);
输出如下:
2.355387e-13+3.263411e-12i
3.037095e-12+1.848502e-12i
2.264321e-12+1.408536e-12i
3.808791e-13-1.647224e-14i
-3.249665e-14+7.954636e-15i
7.026766e-14+1.056313e-13i
等等。现在,如果我想要左边有时间片编号的输出,例如:
0 2.355387e-13+3.263411e-12i
1 3.037095e-12+1.848502e-12i
2 2.264321e-12+1.408536e-12i
3 3.808791e-13-1.647224e-14i
4 -3.249665e-14+7.954636e-15i
5 7.026766e-14+1.056313e-13i
等等,如何编辑代码? 提前感谢您的帮助。
答案 0 :(得分:1)
您的fprintf
声明无法正常运行。它会在到达real(traces)
之前打印出imag(traces)
中的所有值。例如,
>> v = [1 2; 3 4; 5 6]
v =
1 2
3 4
5 6
>> fprintf('%d %d\n',v(:,1),v(:,2))
1 3
5 2
4 6
要按预期方式配对值,您需要转置矩阵:
>> fprintf('%d %d\n',v.')
1 2
3 4
5 6
按照此示例,您可以按如下方式添加切片编号:
v = [(1:numel(traces)).' real(traces(:)) imag(traces(:))].';
fprintf(fileID,'%d %e+%ei\n',v)