textscan返回空单元格数组

时间:2015-08-13 00:28:44

标签: arrays matlab csv

我有一个带有混合记录的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条记录)....有什么想法,我在这里缺少什么?感谢

1 个答案:

答案 0 :(得分:0)

我认为您错误地使用了'delimiter'参数,并且还错误地指定了formatSpec。尝试

fid =  fopen('URM_sample.csv')
nstr = textscan(fid,'%s %s ... %s','delimiter',',', 
               'HeaderLines', 1, 'EndOfLine', '\n')

我认为您需要在%s参数中重复formatSpec 24次。