Я читаю данные фиксированной ширины (9 символов) из текстового файла с помощью textscan. TextScan терпит неудачу на определенной строке, содержащей строку:Ошибка чтения строки с фиксированной шириной с помощью textscan в MATLAB
' 9574865.0E+10 '
Я хотел бы, чтобы прочитать два номера из этого:
957486 5.0E+10
Проблема может быть воспроизведен, как это:
dat = textscan(' 9574865.0E+10 ','%9f %9f','Delimiter','','CollectOutput',true,'ReturnOnError',false);
нижеследующая погрешность:
Error using textscan
Mismatch between file and format string.
Trouble reading floating point number from file (row 1u, field 2u) ==> E+10
Удивительно, но если добавить минус, мы не получаем ошибку, но неверный результат:
dat = textscan(' -9574865.0E+10 ','%9f %9f','Delimiter','','CollectOutput',true,'ReturnOnError',false);
Теперь Дат {1} является:
-9574865 0
Очевидно, что мне нужно для обоих случаев работать. Моим текущим обходным путем является добавление запятых между полями и использование запятых в качестве разделителя в textscan, но это медленное и не очень хорошее решение. Есть ли способ, которым я могу правильно прочитать эту строку с помощью textscan или другой встроенной (по соображениям производительности) функции MATLAB?
Да, он сначала урезает, что именно моя проблема. % 6f не является решением, мне нужно преобразовать все первые 9 символов в число. Существуют и другие строки, в которых используются все 9 символов. – user1719360
@ user1719360: Посмотрите мое последнее редактирование. Можете ли вы попробовать попробовать свои данные? –
Это работает с моей строкой, но каждое 9-значное поле может содержать любую строку, которая будет оцениваться с допустимым числом. Будет ли это работать во всех возможных случаях? – user1719360