在循环中将行写入.dat文件(MATLAB)

时间:2018-04-30 18:40:01

标签: database matlab loops format printf

我正在尝试创建一个具有特定格式的.dat文件,以便将其读入新程序。在循环中,我打开数据并希望将该数据打印到.dat文件中的新行。输出看起来像这样:

Event #1 Jan 07 2001

file #1 00 11 22 33

file #2 01 12 23 34

..

所以我想将从数据集中获取的字符串和双精度数组合到.dat文件的同一行。以下是我的代码的一般形式。

file=fopen('phase.dat', 'w');

for k=1:length(data)

X=data(1,k);

Y=data(2,k);

fprintf(file, '%s %f %f \n', 'Event 1', X, Y);

end

fclose(file);

然而,这不起作用。你能看出我的问题吗?谢谢,

2 个答案:

答案 0 :(得分:1)

这应该可以正常工作:

Event #11 May 01 2018
file #1 84 63
file #2 51 88
file #3 81 80
file #4 23 89
file #5 23 14
file #6 50 79
file #7 29 46
file #8 00 74
file #9 03 56
file #10 05 02

Event #12 May 01 2018
file #1 23 70
file #2 28 36
file #3 37 47
file #4 96 74
file #5 54 31
file #6 75 11
file #7 50 20
file #8 17 47

Event #13 May 01 2018
file #1 93 01
file #2 32 14
file #3 27 80
file #4 94 56
file #5 59 69

Event #14 May 01 2018
file #1 85 52
file #2 57 12
file #3 22 02
file #4 99 45
file #5 72 62
file #6 56 95
file #7 44 58
file #8 44 00
file #9 83 73

以下是四次运行后文件的潜在内容:

\n

您可以根据需要调整间距,在fprintf来电格式的末尾追加-in

答案 1 :(得分:0)

您的代码有效。我做了一个小修改只是为了类似你所需的格式。

file=fopen('phase.dat', 'w');
fprintf(file, '%s\n\n', 'Event #1 Jan 07 2001');
data = rand(2,10);
for k=1:length(data)

    X=data(1,k);

    Y=data(2,k);

    fprintf(file, '%s%d %f %f\n\n', 'file #', k, X, Y);

end

fclose(file);

那么,究竟什么不起作用?