我有一个带有混合记录的CSV文件(包括double和string)以及第一行中的字符串标题行。
我编写了以下代码,将此csv文件导入MatLAB中的单元数组
%Determine Formatspec for CSV file
fid = fopen('URM_sample.csv')
C = textscan(fid, '%s', 'Delimiter', '\n')
str = C{1}{2,:}
nstr = textscan(str,'%s','delimiter',',')
fspec = ''
for i = 1:length(nstr{1}) % Check each string
if isempty(str2num(nstr{1}{i})) % This string is text
fspec = [fspec ' %s'];
else % This string is a number
fspec = [fspec ' %f'];
end
end
B = textscan(fid,fspec,'HeaderLines',1,'Delimiter',',')
不幸的是,当我打开B时,我得到的是一个空的1x24单元阵列,其中原始的csv是201x24(包含201条记录)....有什么想法,我在这里缺少什么?感谢
答案 0 :(得分:0)
我认为您错误地使用了'delimiter'参数,并且还错误地指定了formatSpec
。尝试
fid = fopen('URM_sample.csv')
nstr = textscan(fid,'%s %s ... %s','delimiter',',',
'HeaderLines', 1, 'EndOfLine', '\n')
我认为您需要在%s
参数中重复formatSpec
24次。