如何将多个矩阵写入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更新了我的答案,以防你想用另一种编程语言解析文本文件。如果答案是你想要的,请接受