将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]
Posted
技术标签:
【中文标题】将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]【英文标题】:save output to text file without overwriting & Printing N entries in a matrix [matlab] 【发布时间】:2012-04-07 12:22:27 【问题描述】:我想将我的函数结果保存在一个文本文件中。这可以在 malab 中使用以下方式完成:
使用 Printf
fileID = fopen('testdata.txt', 'w');
fprintf(fileID, '%d %d %d\n', v);
fclose(fileID);
使用保存
save('testdata.txt', 'v', '-ascii');
但问题是使用两种方法,如果重复该功能,文件正在蜂鸣overwriten如何解决? 我需要 10 次运行的所有输出。
这里有一些例子: A% 使用打印 v = [3 6 9];
>> fileID = fopen('testdata.txt', 'w');
fprintf(fileID, '%d %d %d\n', v);
fclose(fileID);
文件输出(第 1 行):3 6 9
>> v= [1 2 3];
>> fileID = fopen('testdata.txt', 'w');
fprintf(fileID, '%d %d %d\n', v);
fclose(fileID);
文件输出(第 1 行):1 2 3(文件被覆盖)
B %使用保存
>> save('testdata.txt', 'v', '-ascii');
文件输出(第 1 行):1.0000000e+000 2.0000000e+000 3.0000000e+000
>> v = [3 6 9];
>> save('testdata.txt', 'v', '-ascii');
文件输出(第 1 行):3.0000000e+000 6.0000000e+000 9.0000000e+000
**Printing N values**
上例中的 V 是 3 个条目:如果存在 N 个条目,确定有办法显示它们吗?
【问题讨论】:
【参考方案1】:当你打开一个文件时,使用
fileID = fopen('testdata.txt', 'a');
用“a”代替“w”。这将附加到该文件。请参阅:fopen。
【讨论】:
对于 v=[3 6 9] 和 v=[13 16 19] 这是输出:3 6 913 16 19。如何在下一行显示 v2?以这种方式读取913 而不是 9 13...【参考方案2】:代码如下:
for i= 1:4;
fileID = fopen('testdata.txt', 'at');
fprintf(fileID, 'this is answer %d\n',i);
fprintf(fileID, '%5.3e\n', vi);
fclose(fileID);
end
在记事本中回答:
this is answer 1
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
0.000e+000
1.000e+000
1.000e+000
1.000e+000
this is answer 2
1.000e+000
0.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
this is answer 3
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
0.000e+000
1.000e+000
1.000e+000
this is answer 4
1.000e+000
1.000e+000
1.000e+000
1.000e+000
0.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
1.000e+000
【讨论】:
感谢@Richante,但如果我有 N 个条目并想在一行中显示它们,我必须写 '%5.3e, (Ntimes)\n' !!!!!!以上是关于将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]的主要内容,如果未能解决你的问题,请参考以下文章