采用MATLAB连接从数据库或者其他地方导出数据时,数据格式是cell类型,里面包含数字、汉字等等多类型变量。采用常规方法乱码,采用matlab官网方法可将数据正常导出。
摘自matlab官网的代码。
function cell2csv(filename,cellArray,delimiter)
% Writes cell array content into a *.csv file.
%
% CELL2CSV(filename,cellArray,delimiter)
%
% filename = Name of the file to save. [ i.e. 'text.csv' ]
% cellarray = Name of the Cell Array where the data is in
% delimiter = seperating sign, normally:',' (it's default)
%
% by Sylvain Fiedler, KA, 2004
% modified by Rob Kohr, Rutgers, 2005 - changed to english and fixed delimiter
if nargin<3
delimiter = ',';
end
datei = fopen(filename,'w');
for z=1:size(cellArray,1)
for s=1:size(cellArray,2)
var = eval(['cellArray{z,s}']);
if size(var,1) == 0
var = '';
end
if isnumeric(var) == 1
var = num2str(var);
end
fprintf(datei,var);
if s ~= size(cellArray,2)
fprintf(datei,[delimiter]);
end
end
fprintf(datei,'\n');
end
fclose(datei);
函数调用。
cell2csv('Gender_男.csv', Data, ',');
输出结果。
常规方法对于数组有效,元细胞乱码。
tmp = Data;
[tm,tn]= size(Data);
fid = fopen('Gender男.csv', 'w+', 'n', 'utf8'); % 创建一个csv文件
for i=1:tm
fprintf(fid, '%s,%s,%s,%s,%s,%s,%s,%s,%s\n',...
tmp{i,1},...
tmp{i,2},tmp{i,3},tmp{i,4},...
tmp{i,5},tmp{i,6},...
tmp{i,7},tmp{i,8},...
tmp{i,9}...
); % 一行9个数据,用逗号分隔;每行结束后加上\n换行
end
fclose(fid);
输出结果。