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');
Другие вопросы по тегам