我有两个数组,(data1是字符串的头数组,data2是数字的数据数组)
data1 = {'#','Area','C Xp','C Yp','Length','B #','R','L','Ch','E1 Xp','E1 Yp','E2 Xp','E2 Yp'};
data2 = [1 939 -397 586 99 2 2 0 -1 -450 588 -352 572
2 1185 -287 294 145 2 1 1 0 -317 359 -235 244
3 592 -242 486 77 3 2 1 0 -278 488 -202 477
4 818 -144 480 60 2 0 2 1 -181 488 -135 451
5 377 -23 -443 37 1 0 1 0 -42 -459 -12 -460
6 923 32 -234 67 1 0 0 0 -3 -260 60 -212
7 812 150 -148 54 1 0 1 0 136 -130 169 -161
8 5968 428 432 402 3 3 0 -1 224 468 622 356
9 617 714 13 63 1 0 1 0 687 35 702 -22
csvwrite('file.xlsx', data1, 0, 0);
csvwrite('file.xlsx', data2, 0, 1);
我的第一个问题是data1以电子数组的形式打印到电子表格中(例如:'#','A','r','e','...各自在自己的单元格中)。如何将其打印为我传递的字符串?
我的第二个问题是当我csvwrite data2时,data1的信息被删除或覆盖。如何将两者写入同一个文件?
答案 0 :(得分:1)
隐藏在Tips section of the csvwrite
documentation:
csvwrite
不接受输入矩阵M
的单元格数组。要导出仅包含数字数据的单元格数组,请在调用cell2mat
之前使用csvwrite
将单元格数组转换为数字矩阵。 要导出具有混合字母和数字数据的单元格数组,其中每个单元格包含一个元素,您可以使用xlswrite
创建Excel®电子表格(如果您的系统已安装Excel)。对于所有其他情况,您必须使用低级导出函数来编写数据。有关更多信息,请参阅MATLAB®数据导入和导出文档中的Export Cell Array to Text File。
我会说,使用xlswrite
。
如果您无法使用xlswrite
,那么您似乎无法按照页面Export Cell Array to Text File中所述手动执行此操作。有点像:
% write headers
fid = fopen('test.csv','w');
fprintf(fid,'%s,',data1{:});
fprintf(fid,'\n');
% write data...
fprintf(fid,[repmat('%d,',1,numel(data1)) '\n'],data2);
fclose(fid)