Matlab текстовое сканирование с фиксированной шириной
Я должен прочитать такой файл
10001 3 5.0000 30.0 0.0000 25.6 0.0000 10.0
10002 1 25.0000 0.0000 4.6887 58.2
10003 5 45.0000 20.0 0.0000 14.7608
10004 5 65.0000 0.0000 8.8791
10005 1 85.0000 0.0000 6.3128 00.0
где такой формат файла: "%5i%5i%%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f"
Я использую следующий код
n_xyz_filename = input('\nSelect the file. ', 's');
n_xyz_file = fopen(n_xyz_filename, 'r');
n_xyz = textscan(n_xyz_file, '%5i%5i%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
fclose(n_xyz_file);
Но я продолжаю получать следующую ошибку
??? Ошибка использования ==> текстов. Плохо сформированная строка формата.
Я действительно не могу получить это!
РЕДАКТИРОВАТЬ
Как сказал ответ, правильный код:
n_xyz_filename = input('\nSelect the file. ', 's');
n_xyz_file = fopen(n_xyz_filename, 'r');
n_xyz = textscan(n_xyz_file, '%5d%5d%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');
fclose(n_xyz_file);
с "d" (обозначает десятичную) вместо "i"
1 ответ
Решение
Проблема в спецификаторе формата i
, который не признается textscan
, Если вы хотите указать целое число, вы должны были использовать d
, Следовательно, правильный синтаксис:
n_xyz = textscan(n_xyz_file, '%5d%5d%10.4f%8.1f%10.4f%8.1f%10.4f%8.1f');