matlab文件的输出中,经常遇到字符串与数值型同时输出,需要判断后再重新写的情况
这里在官网有一个函数,cell2csv可以根据分隔符直接将cell矩阵直接输出成几列至csv文件
我这里给出的示例是输出时间和PM2.5,时间是字符串,污染物浓度是数值
var_station{1,1}='Time,pm2.5'; %第一行为头信息
for m=1:length(file) %从第二行开始分别为每一个时刻的时间和污染物浓度,合并为一个cell
if isnan(pm_avg)
var_station{m+1,1}=strcat(time_str,',',num2str(-9999));
else
var_station{m+1,1}=strcat(time_str,',',num2str(pm_avg));
end
end

然后调用函数输出至csv文件即可
cell2csv('CS-PM25.csv',var_station,',')
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_r(['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);