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

时间:2013-08-22 18:26:03

标签: matlab append

我已经多次搜索,以解决我写入/输出文件的特殊情况,但没有取得多大成功。

我有一个for循环,它生成1个单元矩阵和1个常规矩阵。对于每个循环,Cell Matrix可以是可变长度的。假设< 1x5>的尺寸,单元矩阵存储以下字符串:

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

由于

3 个答案:

答案 0 :(得分:1)

在所有循环完成之后,你可以避免关闭文件,即:

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)

答案 1 :(得分:0)

我会这样做:

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);

答案 2 :(得分:0)

%s={'Aggregated Day', 'AggreVal from Curve', 'Val3_Name', ...
   'Val4_Name', 'Val5_Name'};

%n=[1.3, 1300, 14, 15, 16];

filename='myfile.xlsx'; % Change it to myfile.txt if needed for text version

% the trick is to retain the row number to append contents

%N = no. of entries.
for k = 1:2:N                %Sheet        %Row
    xlswrite( filename, s ,    1,    sprintf('A%d',k)   )
    xlswrite( filename, n ,    1,    sprintf('A%d',k+1) )
end