Мне нужно прочитать файл данных ASCII, используя команду MATLAB fscanf
. Данные представляют собой плавающие числа с фиксированной длиной поля и точностью. В каждой строке файла данных имеется 10 столбцов числовых значений, а число строк варьируется от одного файла к другому. Ниже приведен пример первой линии: ширинаЧтение файлов с фиксированной длиной поля
0.000 0.000 0.005 0.000 0.010 0.000 0.015 0.000 0.020 -0.000
Поле 7 и точность 3.
Я попытался:
x = fscanf(fid,'%7.3f\r\n');
x = fscanf(fid,[repmat('%7.3f',1,10) '\r\n']);
но они не возвращают ничего!
Когда я не указываю поле и точность, например x = fscanf(fid,'%f');
, он считывает все данные, но синус некоторые данные занимают ровно 7 пробелов (пример 158.000), он соединяет два последовательных числа, что приводит к неправильному выходу. Вот пример:
0.999158.000
читает это как 0.999158
и .000
Любой намек или помощь будет высоко оценена.
Как вы получите '0.999158.000' из' 0.000 0.000 0,005 0,000 0,010 0,000 0,015 0,000 0,020 -0,000'? – IKavanagh
Также, что вы подразумеваете под шириной поля, является '7', а точность -' 3' в '0.000 0.000 0.005 0.000 0.010 0.000 0.015 0.000 0.020 -0.000'?Ни одно из этих значений не имеет ширины поля '7' для меня. – IKavanagh