2015-04-19 4 views
1

Я читаю текстовый файл, используя fscanf. Каждая строка начинается с 3 поплавков и заканчивается либо «aaa bb ccccc», либо abc. Например:Matlab - make scanf обнаружить строку в одинарных кавычках ИЛИ нормальную строку

1.3 1.4 3.5 hello 
4.5 66 4.3 'hi there k' 
1.3 1.4 3.7 something 

Я хотел бы извлечь только эти цифры, используя fscanf. Одиночные кавычки вызывают множество проблем,% s не определяет строку правильно.

ответ

0

Если вы просто хотите номера вы можете использовать

A = textscan(fid, '%f%f%f%s', 'CommentStyle', {'''' ''''}) 

... где FID является файл идентификатор из fopen. Этот хак работает, делая команду textscan обрабатывать одиночные ' в качестве комментариев. Синтаксис выглядит фанки, потому что для определения одной кавычки в строке Matlab вам нужно поставить 4 вместе ''''. Есть два из них в массиве ячеек, так что CommentStyle рассматривает что-либо между этими символами как комментарий блока.

+0

Вы протестировали это? Это не работает для меня - все, что я получаю, это первая строка. – user4205580

+0

Да. Проверено. A - массив ячеек 1x4 с vals из каждого столбца в каждом элементе. Комментарии между '' 'игнорируются, но все числовые значения находятся в правильном положении. Скопируйте вставьте строку выше, чтобы проверить, что вы не сделали опечатку. – learnvst

+0

Почему он возвращает массив ячеек вместо обычной матрицы? В чем смысл массива ячеек здесь ... – user4205580

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