при условии, что ваши данные выглядят следующим образом:
col1,col2,col3,col4,col5,col6,col7,col8,col9
1,n1,1,1,fgd,1,1,1,1
2,n2,2,2,2,2,dfdf,2,2
3,n3,3,3,3,3,3,str1,223,,3
и у вас нет выбора изменить данные
- изменить разделитель с запятой на точку с запятой
- или окружить данные двойными кавычками
textscan()
не может быть достаточно умным, чтобы обнаружить это.Я бы предложил такой подход, как:
fid = fopen('c.csv');
data = char(fread(fid))';
fclose(fid);
data = split(data);
теперь вы можете анализировать данные строка за строкой (ячейка за ячейкой).
{'col1,col2,col3,col4,col5,col6,col7,col8,col9'}
{'1,n1,1,1,fgd,1,1,1,1' }
{'2,n2,2,2,2,2,dfdf,2,2' }
{'3,n3,3,3,3,3,3,str1,223,,3' }
или
fmt = '%s %s %s %s %s %s %s %s %s';
data = textscan(fid, fmt, ...
где-то в вашем цикле синтаксического анализа вы можете использовать str2double, что приведет к NaN
, если оно не является числовым:
>> str2double('str')
ans =
NaN