Я пытаюсь прочитать файл .dat, содержащий десятки тысяч строк, где каждая из них выглядит примерно так:
1.9681968 0 0 19.996 0 61 100 1.94E-07 6.62E-07
2.330233 0 0 19.996 0 61 100 1.94E-07 6.62E-07
2.6512651 0 0 19.997 0 61 100 1.94E-07 6.62E-07
3.5923592 0 0 19.998 0 61 100 1.96E-07 6.62E-07
Сейчас, например, я пытаюсь прочитать это с помощью
Data = textscan(fid, %.9f%*f%*f%.9f%*f%*f%*f%.9f)
где формат строки зависит от того, какой столбец я хочу прочитать.
При чтении больших файлов первый столбец массива ячеек «Данные» станет
1.96819680000000
0
2.33023300000000
2.65126510000000
0
3.59235920000000
0
а в остальных столбцах вместо нулей будут отображаться NaN. Дополнительных строк почти столько же, сколько строк в файле данных, поэтому я получаю массивы, которые почти в 2 раза больше.
Я предполагаю, что это как-то связано с ошибками при чтении двойников, поскольку эта проблема не возникает, если я пытаюсь прочитать файл как строки.
Но, если возможно, я бы хотел не читать все как строки и не конвертировать все в двойные числа.
Любые идеи?
%f
в вашем спецификаторе формата, но у вас есть 9 столбцов в вашем файле. Вот почему у вас несогласованный вывод с дополнительными строками. Программа считывает 8 значений в одной строке, затем пытается запустить другую строку вывода... считывает только одно значение, оставшееся в строке, не может прочитать больше, поэтому закрывает строку, начинает другую строку, читает 8 значений... и т.д.. . - person Hoki   schedule 10.08.2015%*[^\n]
в конце своего строкового формата, который должен позаботиться обо всем остальном. Но может вы и правы в своих рассуждениях, я проверю, так ли это было. Спасибо! - person woodenflute   schedule 10.08.2015