使用fprintf在matlab输出中添加时间片

时间:2014-04-09 23:35:58

标签: matlab

我有一个复数的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

等等,如何编辑代码? 提前感谢您的帮助。

1 个答案:

答案 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)