2012-05-31 3 views
2

У меня есть большой набор текстовых файлов (данные с разделителями табуляции) Мне нужно разобрать. Они в основном хорошо отформатированы. Тем не менее, есть случайные строки с чередованием, которые содержат ошибочные символы, например, что показано ниже. Расположение неудачных строк в каждом файле различно, но добавленные символы всегда одинаковы.Импорт данных в Matlab из плохо отформатированного файла

1 3 
2 873 
3 46 
23 99798 
23 1 
353 79 
"23 ," 967 
35 8028 
253 615 
"235 ," 3924 
345 188 
345 579 
345 419 
56 16835 
23 449 

ImportData (имя файл) импортирует все данные до первых плохо отформатированных линий, а затем игнорирует оставшуюся часть файла. Я думаю, что я мог бы сделать то, что я пытаюсь сделать с комбинацией fopen и textscan, но я не могу представить правильную комбинацию аргументов, чтобы заставить ее работать.

ответ

2

Истекает с использованием функции textread с строкой формата %q. Если предположить, что тестовые данные в вопросе сохраняется как test.txt:

>> [a, b] = textread('test.txt', '%q %q'); 

>> a' 

ans = 

    Columns 1 through 9 

    '1' '2' '3' '23' '23' '353' '23 ,' '35' '253' 

    Columns 10 through 15 

    '235 ,' '345' '345' '345' '56' '23' 

>> b' 

ans = 

    Columns 1 through 9 

    '3' '873' '46' '99798' '1' '79' '967' '8028' '615' 

    Columns 10 through 15 

    '3924' '188' '579' '419' '16835' '449' 

Затем вы можете использовать str2double удалить замыкающие столбцы в a. Например:

>> str2double(a)' 

ans = 

    Columns 1 through 13 

    1  2  3 23 23 353 23 35 253 235 345 345 345 

    Columns 14 through 15 

    56 23 
+1

Спасибо! Мой последний код оказался следующим. [a, b] = textread (имя файла, '% q% q'); data = [str2double (a) str2double (b)]; – 1minus1

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