Импорт и экспорт данных
Функция dlmread (чтение из текстовых файлов) предназначена для чтения матриц из текстовых файлов. Первый аргумент функции – имя файла. Результат записывается в матрицу.
Вторым аргументом можно явно указать разделитель чисел в файле, например ‘,’
Чтобы узнать размер прочитанной матрицы по каждому измерению используется функция size, которая возвращает массив двух значений: количество прочитанных строк и столбцов:
Чтобы узнать общее число прочитанных чисел можно перемножив размеры матрицы, используя функцию prod
или использовать функцию numel (количество всех элементов)
Третий и четвертый аргумент dlmread смещение строки и столбца, начиная с которых нужно начинать считывать данные из файла. Например, чтобы пропустить 1 строку и один столбец, необходимо вызвать функцию со следующими дополнительными параметрами
Чтение данных из Excel файлов
Для чтение данных из XLS файлов используется функция xlsread
### Функция readtable
Функция позволяет импортировать таблицы из файлов различных форматов. В отличие от результата работы функции xlsread результатом работы функции readtable является объект table, который содержит дополнительную информацию о таблице: об именах столбцов, строк. Без дополнительных указаний функция readtable считает, что в первой строке таблицы записаны имена её столбцов.
В рабочем каталоге MATLAB находится xls-файл следующего на листе “Лист1” которого находятся следующие данные:
Результатом работы функции readtable будет таблица (объект table)
Первая строка в первом столбце таблицы не содержит никаких значений (ячейка А1 пустая), поэтому первому столбцу было присвоено имя автоматически Var1. Второй и третий столбцы в таблице имеют имена COL1 и COL2 соответственно. Функция readtable рассматривает эти значения как имена столбцов. Если такое поведение функции readtable нежелательно, то можно передать функции значение ‘ReadVariableNames’ равное false
Видно, что в этом случае, поскольку столбцы исходной таблицы в таком представлении содержат неоднородные данные (и числа и строки), все значения в столбцах рассматриваются как строковые без попыток их преобразования в числовые значения. Для корректного чтения данных из таблицы ‘Книга1.xlsx’ необходимо использовать поведение функции readtable по умолчанию, т.е.
В этом случае можно получить содержимое столбца, используя его имя. Например data.COL1 представляет собой матрицу столбец
Столбец data.Var1 это матрица ячеек, содержащая строковые значения
Список имен столбцов содержится в атрибуте (свойстве) таблицы data.VariableNames, которое считывается следующим образом
Для того, чтобы значения в первом столбце рассматривались как имена строк, необходимо использовать опцию ReadRowNames
Для чтения извлечения данных из строки по её имени используется следующий синтаксис
Результатом является объект типа table. Можно извлечь несколько строк по их именам, например так
Чтобы извлечь данные в виде матрицы необходимо использовать свойство таблицы Variables
Для исходной таблицы это свойство вернет все числовые значения в виде матрицы
MATLAB – импорт данных
Загружает данные в массив A из файла, обозначенного именем файла .
A = importdata (‘- pastespecial’)
Загружает данные из системного буфера обмена, а не из файла.
A = importdata (___, delimiterIn)
Интерпретирует delimiterIn как разделитель столбцов в файле ASCII, имени файла или данных буфера обмена. Вы можете использовать delimiterIn с любым из входных аргументов в приведенных выше синтаксисах.
A = importdata (___, delimiterIn, headerlinesIn)
Загружает данные из файла ASCII, имени файла или буфера обмена, считывая числовые данные, начиная со строки headerlinesIn + 1 .
[A, delimiterOut, headerlinesOut] = importdata (___)
Возвращает обнаруженный символ разделителя для входного файла ASCII в delimiterOut и обнаруженное количество строк заголовка в headerlinesOut , используя любой из входных аргументов в предыдущих синтаксисах.
A = importdata (имя файла)
Загружает данные в массив A из файла, обозначенного именем файла .
A = importdata (‘- pastespecial’)
Загружает данные из системного буфера обмена, а не из файла.
A = importdata (___, delimiterIn)
Интерпретирует delimiterIn как разделитель столбцов в файле ASCII, имени файла или данных буфера обмена. Вы можете использовать delimiterIn с любым из входных аргументов в приведенных выше синтаксисах.
A = importdata (___, delimiterIn, headerlinesIn)
Загружает данные из файла ASCII, имени файла или буфера обмена, считывая числовые данные, начиная со строки headerlinesIn + 1 .
[A, delimiterOut, headerlinesOut] = importdata (___)
Возвращает обнаруженный символ разделителя для входного файла ASCII в delimiterOut и обнаруженное количество строк заголовка в headerlinesOut , используя любой из входных аргументов в предыдущих синтаксисах.
По умолчанию Octave не поддерживает функцию importdata () , поэтому вам придется искать и устанавливать этот пакет, чтобы следующие примеры работали с вашей установкой Octave.
Пример 1
Давайте загрузим и отобразим файл изображения. Создайте файл сценария и введите в нем следующий код –
Когда вы запускаете файл, MATLAB отображает файл изображения. Однако вы должны сохранить его в текущем каталоге.

Пример 2
В этом примере мы импортируем текстовый файл и указываем разделитель и заголовок столбца. Давайте создадим ASCII-файл, разделенный пробелами, с заголовками столбцов с именем weeklydata.txt .
Наш текстовый файл weeklydata.txt выглядит так –
Создайте файл сценария и введите в нем следующий код –
Когда вы запускаете файл, он показывает следующий результат –
Пример 3
В этом примере давайте импортируем данные из буфера обмена.
Скопируйте следующие строки в буфер обмена –
Математика проста
Создайте файл сценария и введите следующий код –
Когда вы запускаете файл, он показывает следующий результат –
Низкоуровневый файловый ввод / вывод
Функция importdata является высокоуровневой функцией. Низкоуровневые функции ввода / вывода файлов в MATLAB позволяют максимально контролировать чтение или запись данных в файл. Однако эти функции нуждаются в более подробной информации о вашем файле для эффективной работы.
MATLAB предоставляет следующие функции для операций чтения и записи на уровне байтов или символов:
| функция | Описание |
|---|---|
| fclose | Закройте один или все открытые файлы |
| feof | Тест на конец файла |
| FERROR | Информация об ошибках файлового ввода-вывода |
| fgetl | Чтение строки из файла, удаление символов новой строки |
| fgets | Читать строку из файла, сохраняя символы новой строки |
| Еореп | Откройте файл или получите информацию об открытых файлах |
| fprintf | Записать данные в текстовый файл |
| Fread | Чтение данных из двоичного файла |
| frewind | Переместить индикатор положения файла в начало открытого файла |
| fscanf | Читать данные из текстового файла |
| FSEEK | Переместить в указанную позицию в файле |
| ftell | Положение в открытом файле |
| FWRITE | Записать данные в двоичный файл |
Импорт текстовых файлов данных с низкоуровневым вводом / выводом
MATLAB предоставляет следующие функции для низкоуровневого импорта файлов текстовых данных –
Функция fscanf читает отформатированные данные в текстовом или ASCII-файле.
Функции fgetl и fgets читают по одной строке файла за раз, где символ новой строки разделяет каждую строку.
Функция fread считывает поток данных на уровне байтов или битов.
Функция fscanf читает отформатированные данные в текстовом или ASCII-файле.
Функции fgetl и fgets читают по одной строке файла за раз, где символ новой строки разделяет каждую строку.
Функция fread считывает поток данных на уровне байтов или битов.
пример
У нас есть текстовый файл данных «myfile.txt», сохраненный в нашем рабочем каталоге. Файл хранит данные об осадках за три месяца; Июнь, июль и август за 2012 год.
Данные в myfile.txt содержат повторные наборы измерений времени, месяца и количества осадков в пяти местах. Данные заголовка хранят количество месяцев M; таким образом, у нас есть M наборов измерений.
Файл выглядит так –
Мы импортируем данные из этого файла и отображаем эти данные. Сделайте следующие шаги –
Откройте файл с помощью функции fopen и получите идентификатор файла.
Опишите данные в файле с помощью спецификаторов формата , таких как « % s » для строки, « % d » для целого числа или « % f » для числа с плавающей запятой.
Чтобы пропустить буквенные символы в файле, включите их в описание формата. Чтобы пропустить поле данных, используйте звездочку (‘*’) в спецификаторе.
Например, чтобы прочитать заголовки и вернуть единственное значение для M, мы пишем –
По умолчанию fscanf считывает данные в соответствии с нашим описанием формата, пока не найдет совпадения для данных или не достигнет конца файла. Здесь мы будем использовать цикл для чтения 3 наборов данных и каждый раз будем читать 7 строк и 5 столбцов.
Мы создадим структуру с именем mydata в рабочей области для хранения данных, считанных из файла. Эта структура имеет три поля – время , месяц и массив raindata .
Откройте файл с помощью функции fopen и получите идентификатор файла.
Опишите данные в файле с помощью спецификаторов формата , таких как « % s » для строки, « % d » для целого числа или « % f » для числа с плавающей запятой.
Чтобы пропустить буквенные символы в файле, включите их в описание формата. Чтобы пропустить поле данных, используйте звездочку (‘*’) в спецификаторе.
Например, чтобы прочитать заголовки и вернуть единственное значение для M, мы пишем –
По умолчанию fscanf считывает данные в соответствии с нашим описанием формата, пока не найдет совпадения для данных или не достигнет конца файла. Здесь мы будем использовать цикл для чтения 3 наборов данных и каждый раз будем читать 7 строк и 5 столбцов.
Мы создадим структуру с именем mydata в рабочей области для хранения данных, считанных из файла. Эта структура имеет три поля – время , месяц и массив raindata .
Как в матлаб загрузить данные из файла
На Editor щелкает Live Editor или вкладка Home, в разделе File
.
На вкладке Editor, в разделе File, нажимают Open
и выбирают Open as Text.
В нижней части Open
выпадающий список выберите файл под Recent Files.
Чтобы изменить количество файлов в списке, нажмите
Preferences, и затем выберите MATLAB и Editor/Debugger. Под Most recently used file list, изменение значение для Number of entries.
На вкладке Home, в разделе Environment, нажимают
Preferences и выбирают MATLAB и Editor/Debugger. Затем выберите On restart reopen files from previous MATLAB session.
На вкладке Editor или Live Editor, в разделе File, нажатии кнопки
.
На вкладке Editor или Live Editor, в разделе File, нажимают Save
и выбирают Save As.
На вкладке Editor, в разделе File, нажимают Save
и выбирают Save Copy As.
На вкладке Editor, в разделе File, нажимают Save
и выбирают Save All.
How to import .dat file into Matlab?
i have one file (name.dat) which is binary data, it has 12 lines of header, then just one column of 10^6 floating data points.
I searched that in Matlab I can do
When run the three lines of code above, and A is empty; it is wired.
Can you help me out of this ?
2 Answers 2
Finally, I figure it out. when I open my .dat file with text editor, it has headerlines, and data part. I can see the header(ASCII), but the data part is random machine code, which means it is binary data, I also know it is floating point.
so instead of using «textscan or fscan», I use «fread» function in matlab to load the data.
Before loading into matlab, I deleted the header lines, if not deleted, the size of the data loaded is different and wrong.