如何将多个矩阵写入Matlab中的一个文件而不被过度写入
我想使用以下代码将三个不同的矩阵写入一个文件如何将多个矩阵写入Matlab中的一个文件而不被过度写入,matlab,matrix,Matlab,Matrix,我想使用以下代码将三个不同的矩阵写入一个文件 REF=[0 6; 1 6; 2 6; 5 6; 10 6; 50 6; 100 6; 1000 6]; dlmwrite('exp.txt',REF,'delimiter','\t','precision',4) A1=[0 6; 1 3; 2 4; 5 4; 10 4; 50 4; 100 4; 1000 4]; dlmwrite('
REF=[0 6;
1 6;
2 6;
5 6;
10 6;
50 6;
100 6;
1000 6];
dlmwrite('exp.txt',REF,'delimiter','\t','precision',4)
A1=[0 6;
1 3;
2 4;
5 4;
10 4;
50 4;
100 4;
1000 4];
dlmwrite('exp.txt',A1,'delimiter','\t','precision',4)
A2=[0 8;
1 8;
2 8;
5 8;
10 8;
50 8;
100 8;
1000 8];
dlmwrite('exp.txt',A2,'delimiter','\t','precision',4)
fclose(fileID);
但当我运行程序时,文件中只存在最后一个矩阵,所有以前的数据都被重写了。如何将多个矩阵写入一个文件而不被过度写入?使用-append:
结果:
0 6
1 6
2 6
5 6
10 6
50 6
100 6
1000 6
0 6
1 3
2 4
5 4
10 4
50 4
100 4
1000 4
0 8
1 8
2 8
5 8
10 8
50 8
100 8
1000 8
REF =
0 1
2 5
10 50
100 1000
6 6
6 6
6 6
6 6
A1 =
0 1
2 5
10 50
100 1000
6 3
4 4
4 4
4 4
A2 =
0 1
2 5
10 50
100 1000
8 8
8 8
8 8
8 8
附言。
您还可以使用fprintf获得矩阵的名称:
代码:
结果:
0 6
1 6
2 6
5 6
10 6
50 6
100 6
1000 6
0 6
1 3
2 4
5 4
10 4
50 4
100 4
1000 4
0 8
1 8
2 8
5 8
10 8
50 8
100 8
1000 8
REF =
0 1
2 5
10 50
100 1000
6 6
6 6
6 6
6 6
A1 =
0 1
2 5
10 50
100 1000
6 3
4 4
4 4
4 4
A2 =
0 1
2 5
10 50
100 1000
8 8
8 8
8 8
8 8
p.S.2
save('mydata.mat','REF', 'A1', 'A2');
然后
使用-附加:
结果:
0 6
1 6
2 6
5 6
10 6
50 6
100 6
1000 6
0 6
1 3
2 4
5 4
10 4
50 4
100 4
1000 4
0 8
1 8
2 8
5 8
10 8
50 8
100 8
1000 8
REF =
0 1
2 5
10 50
100 1000
6 6
6 6
6 6
6 6
A1 =
0 1
2 5
10 50
100 1000
6 3
4 4
4 4
4 4
A2 =
0 1
2 5
10 50
100 1000
8 8
8 8
8 8
8 8
附言。
您还可以使用fprintf获得矩阵的名称:
代码:
结果:
0 6
1 6
2 6
5 6
10 6
50 6
100 6
1000 6
0 6
1 3
2 4
5 4
10 4
50 4
100 4
1000 4
0 8
1 8
2 8
5 8
10 8
50 8
100 8
1000 8
REF =
0 1
2 5
10 50
100 1000
6 6
6 6
6 6
6 6
A1 =
0 1
2 5
10 50
100 1000
6 3
4 4
4 4
4 4
A2 =
0 1
2 5
10 50
100 1000
8 8
8 8
8 8
8 8
p.S.2
save('mydata.mat','REF', 'A1', 'A2');
然后
从中,使用“-append”将数据追加到文件末尾。将fopen与dlmwrite一起使用也是毫无意义的。dlmwrite在内部打开文件。append在单个矩阵的末尾添加数据。但我希望所有三个矩阵都作为单独的实体存在于文件中。因此,当我将文件加载到另一个程序时,我应该得到三个矩阵。append将添加到现有文件中。因此,当您编写A时,exp中有A。然后您将B附加到文件中,从而得到A和B。然后添加C,以便在exp.txt中有A、B和C。因此,在每次DllmWrite调用后写一个空行,或者像现有答案一样添加一个“rowoffset”。从中,使用“-append”将数据附加到文件末尾。将fopen与DllmWrite一起使用也是毫无意义的。dlmwrite在内部打开文件。append在单个矩阵的末尾添加数据。但我希望所有三个矩阵都作为单独的实体存在于文件中。因此,当我将文件加载到另一个程序时,我应该得到三个矩阵。append将添加到现有文件中。因此,当您编写A时,exp中有A。然后您将B附加到文件中,从而得到A和B。然后添加C,这样exp中就有A、B和C。txtSo在每个dlmwrite调用后写一个空行,或者像现有答案一样添加一个“rowoffset”。append在单个矩阵的末尾添加数据。但我希望所有三个矩阵都作为单独的实体存在于文件中。因此,当我将文件加载到另一个程序时,我应该得到三个矩阵。@Habib.Khan我不明白你的意思。“我的结果”不都是A B和C吗?@Habib.Khan上述输出完全符合您的要求。编写一个程序来检测换行符,这样就可以在单独的矩阵之间进行划分。如果您不想这样做,那么不要使用文本文件。使用实际的MATLAB MAT文件保存三个矩阵。这就是MatlabMat文件的用途。你为什么要重新发明轮子?坚持公认的MATLAB实践。好的。我可以使用MAT文件。如何将数据保存为一个MAT文件中可用的三个不同矩阵。你能建议一种方法吗?@Habib.Khan我已经用fprintf更新了我的答案,以防你想用另一种编程语言解析文本文件。如果答案是您想要的,请接受。在单个矩阵末尾添加数据。但我希望所有三个矩阵都作为单独的实体存在于文件中。因此,当我将文件加载到另一个程序时,我应该得到三个矩阵。@Habib.Khan我不明白你的意思。“我的结果”不都是A B和C吗?@Habib.Khan上述输出完全符合您的要求。编写一个程序来检测换行符,这样就可以在单独的矩阵之间进行划分。如果您不想这样做,那么不要使用文本文件。使用实际的MATLAB MAT文件保存三个矩阵。这就是MatlabMat文件的用途。你为什么要重新发明轮子?坚持公认的MATLAB实践。好的。我可以使用MAT文件。如何将数据保存为一个MAT文件中可用的三个不同矩阵。你能建议一种方法吗?@Habib.Khan我已经用fprintf更新了我的答案,以防你想用另一种编程语言解析文本文件。如果答案是你想要的,请接受