В настоящее время у меня проблема с функцией сканирования текста Matlab.
Я получил файл данных, который выглядит следующим образом:
1,2018/08/14 17:06:15, 0,+ 22.24,+ 22.46,+ 18.18,+0.0000,+0.0005,LLLLLLLLLL,LLLLLLLLLL,LLLL
или иногда, когда датчик не работает должным образом, это выглядит так:
1,2018/07/11 17:02:53, 0,+ 23.88,+ 24.78,+ 23.65,+++++++,+ 23.94,+ 23.01,+ 24.33,LLLLLLLLLL,LLLLLLLLLL,LLLL
Поскольку данные варьируются от файла к файлу, я создаю соответствующий формат формата из заголовка.
В 1-м случае это выглядело бы как
formatSpec = '%*u %s %*u%f%f%f%f%f%*[^\n]'
и во 2-м случае, как
formatSpec = '%*u %s %*u%f%f%f%f%f%f%f%*[^\n]'
Я использую функцию texscan следующим образом:
textscan(fileID, formatSpec_data, data_rows, 'Delimiter', ',', 'TreatAsEmpty', {'+++++++'},'EmptyValue', NaN, 'ReturnOnError', 0 );
но он продолжает выдавать ошибку с сообщением
Error using textscan
Mismatch between file and format character vector.
Trouble reading 'Numeric' field from file (row number 1, field number 4) ==> + 23.88,+ 24.78,+ 23.65,+++++++,+ 23.94,+ 23.01,+ 24.33,LLLLLLLLLL,LLLLLLLLLL,LLLL\n
Error in data_logger (line 31)
dataArray = textscan(fileID, formatSpec_data, data_rows, 'Delimiter', delimiter, 'HeaderLines' ,startRow, 'TreatAsEmpty', {'+++++++'},'EmptyValue', NaN, 'ReturnOnError', 0 );
Когда я деактивирую returnOnError, тогда тексты могут читать только первую строку и, кроме строки даты / времени, все просто пусто. Я также пытался использовать текстовое сканирование без TreatAsEmpty и / или EmptyValue, но я получаю тот же результат.
Я действительно не понимаю, почему тексты могут иметь проблемы с чтением, например. , + 22,24 как поплавок.
Когда я указываю formatSpec для чтения всех данных в виде строк, это работает, но потом мне приходится использовать str2num, чего я на самом деле не хочу делать.
Я благодарен за любую помощь и с нетерпением жду, чтобы понять это поведение.