csvwrite格式化(字符串和覆盖)问题,Matlab

时间:2014-04-24 16:41:23

标签: matlab csv formatting

我有两个数组,(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的信息被删除或覆盖。如何将两者写入同一个文件?

1 个答案:

答案 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)