Matlab-将文本和数字数据写入循环中的文件

Matlab-将文本和数字数据写入循环中的文件,matlab,append,Matlab,Append,我已经用谷歌搜索了很多次,以解决我在向文件写入/输出时遇到的特殊情况,但都没有成功 我有一个for循环,它生成1个单元格矩阵和1个正则矩阵。对于每个循环,单元矩阵的长度可以是可变的。假设尺寸为,单元格矩阵存储以下字符串: Aggregated Day, AggreVal from Curve, Val3_Name, Val4_Name, Val5_Name 对于下一个循环,单元格矩阵可以具有不同的内容和大小 数值矩阵与单元矩阵大小相同,表示单元矩阵中名称对应的值。因此,对于该循环,其大小为1x

我已经用谷歌搜索了很多次,以解决我在向文件写入/输出时遇到的特殊情况,但都没有成功

我有一个for循环,它生成1个单元格矩阵和1个正则矩阵。对于每个循环,单元矩阵的长度可以是可变的。假设尺寸为,单元格矩阵存储以下字符串:

Aggregated Day, AggreVal from Curve, Val3_Name, Val4_Name, Val5_Name
对于下一个循环,单元格矩阵可以具有不同的内容和大小

数值矩阵与单元矩阵大小相同,表示单元矩阵中名称对应的值。因此,对于该循环,其大小为1x5,并将值存储为:

1.3, 1300, 14, 15, 16
我想在生成上述单元格和数值矩阵时,将它们写入一个文件(最好是excel或txt文件,以备将来操作)。首先我想输出单元格矩阵,然后是数字矩阵。其次是第二个循环的单元矩阵等

我记得在C++中通过在附加模式下打开文件很容易,但是在Matlab这里看起来很棘手。我尝试过使用xlswrite、dlmwrite、xlsappend等,但到目前为止没有任何效果

因此,输出文件将类似于:

Loop1
Aggregated Day, AggreVal from Curve, Val3_Name, Val4_Name, Val5_Name
1.3, 1300, 14, 15, 16

Loop2
Aggaed Dy, AgeVal fm Curve, China, Val4_Name, Brazil
1.453, 1300, 1774, 1115, 1613

谢谢

在所有循环完成之前,您是否可以避免关闭文件,即:

fid = fopen('filename.txt','w');

% Loop stuff, adding lines to your file

fclose(fid);
看起来您想要的输出类型是一种自定义格式,而不是xls文件,该文件采用类似于表的结构。尝试使用fprintf打印数据:

foo = {'abc','def','ghi'};
foo2 = [1 2 3 4];
fid = fopen('foo.txt','w');
fprintf(fid, '%s ', foo{:});
fprintf(fid, '\n');
fprintf(fid, '%f ', foo2);
fprintf(fid, '\n');
fclose(fid)

是否可以避免在所有循环完成之前关闭文件,即:

fid = fopen('filename.txt','w');

% Loop stuff, adding lines to your file

fclose(fid);
看起来您想要的输出类型是一种自定义格式,而不是xls文件,该文件采用类似于表的结构。尝试使用fprintf打印数据:

foo = {'abc','def','ghi'};
foo2 = [1 2 3 4];
fid = fopen('foo.txt','w');
fprintf(fid, '%s ', foo{:});
fprintf(fid, '\n');
fprintf(fid, '%f ', foo2);
fprintf(fid, '\n');
fclose(fid)
我会这样做:

A{1} = {'Aggregated Day', 'AggreVal from Curve', 'Val3_Name', 'Val4_Name', 'Val5_Name'}
A{2} = {1.3, 1300, 14, 15, 16};
B = cat(1,A{:});
xlswrite(filename,B);
我会这样做:

A{1} = {'Aggregated Day', 'AggreVal from Curve', 'Val3_Name', 'Val4_Name', 'Val5_Name'}
A{2} = {1.3, 1300, 14, 15, 16};
B = cat(1,A{:});
xlswrite(filename,B);

它在for循环中不起作用,因为上一个数据被来自最新循环的信息擦除和写入。它在for循环中不起作用,因为上一个数据被来自最新循环的信息擦除和写入。您的代码不起作用。我是新手,所以我现在正试图弄清楚它为什么不工作。对不起,我忘了在fprintf中包含“w”参数(它告诉Matlab你想“写入”文件,而不是从中读取)。你的代码不工作。我是新手,所以我现在想弄清楚它为什么不工作。对不起,我忘了在fprintf中包含“w”参数(它告诉Matlab你想“写入”文件,而不是从中读取)。