2015-08-13 2 views
0

У меня есть файл CSV со смешанными записями (как double, так и string) и строка заголовка строк в первой строке.textscan возвращающий пустой массив ячеек

Я написал следующий код, чтобы импортировать этот 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',',') 

Unfortunatley, когда я открываю B все, что я получаю пустой массив 1x24 клеток, где первоначально CSV является 201x24 (содержит 201 записи) .... Любая идея о том, чего я здесь не хватает? Спасибо

+0

Трудно сказать, что случилось с файлом CSV. Почему вы не используете csvread()? Если вам нужно прочитать некоторые строки, я бы посоветовал использовать xlsread() – oro777

+0

Показывать первые несколько строк вашего файла csv. – Hoki

ответ

0

Я считаю, что вы неправильно используете параметр «delimiter», а также неправильно указали formatSpec. Попробуйте

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

Я считаю, что вам нужно повторить %s 24 раз в параметре formatSpec.

Смежные вопросы