Ваш пример кода не работает, потому что textscan()
предполагает, что каждая строка в файле будет иметь одинаковый формат. То есть, чтобы использовать textscan()
, каждая строка должна иметь одинаковое количество столбцов, содержащих данные одинакового типа.
Вместо этого я бы воспринимал данные как что-то вроде формата значений через запятую. Разбейте каждый ряд на список токенов, разделенных пробелом, , как предложено Робом Хенсоном здесь :
>> string = 'Need-to-split-this-string'
string =
Need-to-split-this-string
>> parts = strread(string,'%s','delimiter','-')
parts =
'Need'
'to'
'split'
'this'
'string'
Вам нужно будет перебрать файл, читая все строки. Ваши данные появляются в строфах из трех строк, поэтому обрабатывайте данные по три строки за раз.
В качестве альтернативы, вы можете выполнить предварительную обработку текстового файла, чтобы переформатировать каждый раздел из трех строк, чтобы он находился в одной строке. (Просто удалите первое и второе из каждых трех символов новой строки.) Затем используйте регулярное выражение для замены пробелов запятыми. В итоге вы получите что-то вроде:
04001400,HI,34.50,118.27,19480701,08,LST,0,0,0,0,0,0,0,0,0,0,0,0,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS
04001400,HI,34.50,118.27,19480801,08,LST,0,0,0,0,0,0,0,0,0,0,0,0,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS
04001400,HI,34.50,118.27,19480901,08,LST,0,0,0,0,0,0,0,0,0,0,0,0,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS,MIS
В таком формате вы можете использовать textscan()
или, что лучше, csvread()
.