我已经多次搜索,以解决我写入/输出文件的特殊情况,但没有取得多大成功。
我有一个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
由于
答案 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