я пытаюсь импортировать данные из текстового файла в MATLAB, который имеет следующую структуру:импортировать данные из текстового файла в MATLAB с несколькими разделителями
** Porosity
**
*POR *ALL
0.1500 0.0900 2*0.1300 0.1400 4*0.1500 0.2200 2*0.1500 0.0500
0.0900 0.1400 5*0.1500 0.2300 0.2600 0.0800 0.1500 0.1500 0.2400 0.1700
[...]
Заголовок должен быть проигнорированы, очевидно. Пробел - это разделитель, а *
указывает, что одно и то же значение происходит несколько раз, как указано целым числом до *
.
К сожалению, количество записей на линию варьируется. В идеале я хочу хранить все значения в одном массиве, как это:
por = [0.1500 0.0900 0.1300 0.1300 0.1400 0.1500 0.1500 0.1500 0.1500 0.1500 0.2200 0.1500 0.1500 ...]
Может ли это быть решена с помощью textscan
команды каким-то образом? Файл довольно большой с несколькими сотнями тысяч значений, поэтому мне нужно быстрое решение;) Помощь очень ценится!
У вас есть код, который вы «Мы нашли или попробовали до сих пор, с чем мы сможем помочь? Это поможет получить быстрое, конкретное решение. –
Да, вы можете использовать textscan. Я бы прочитал его в использовании пространства в качестве разделителя, а затем использовал regexp, чтобы найти все повторяющиеся числа. Я мог бы поднять некоторый псевдокод, но было бы лучше, если бы вы отправили какой-то код из своих собственных попыток помочь нам. – Trogdor
У меня было медленное решение для другого файла, но в этом случае произошли только множители «2 *» и «4 *», а значения составляли красиво определенную матрицу с последовательным количеством записей в строке. Сначала я загрузил файл в Excel, сохранил его как .xlsx и загрузил его с помощью xlsread. Затем мой код будет запускаться для циклов if и if для выполнения этой работы. Это было довольно трудоемкое и неэффективное решение проблемы. Кроме того, теперь я не могу предсказать множители, поэтому я не могу адаптировать свой код к новому файлу. Я не знаком с командой textscan, но просматривая другие сообщения, которые, как я понял, может быть решением. –