1

我用谷歌搜索了很多次来解决我关于写入/输出到文件的特殊情况,但没有取得多大成功。

我有一个 for 循环,它生成 1 个单元矩阵和 1 个常规矩阵。对于每个循环,单元矩阵可以是可变长度的。假设尺寸为 <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

谢谢

4

3 回答 3

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)
于 2013-08-22T18:31:35.690 回答
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);
于 2013-08-22T18:39:29.003 回答
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
于 2013-08-22T19:05:49.557 回答