Как загрузить данные из файла в Matlab
Обновлено: 21.11.2024
В этом примере показано, как загрузить входные данные симуляции из файла MAT с помощью блока From File, включая то, как создать и отформатировать входные данные. Вы можете программно создавать загружаемые данные, загружать данные, зарегистрированные в ходе другого моделирования, или загружать реальные данные, собранные с датчиков или в лаборатории. Вы можете использовать код из каждого раздела формата в качестве шаблона, чтобы понять, как форматировать собственные входные данные моделирования.
Изучите модель
В этом примере используется простая модель. Два блока From File загружают данные из двух разных файлов MAT для создания сигналов, которые связаны с двумя блоками Outport. Один блок From File загружает данные для скалярного сигнала, и только параметр имени файла для этого блока изменяется по сравнению со значением по умолчанию. Другой блок From File настроен на загрузку данных для шины. Два блока Dashboard Scope отображают выходные сигналы, созданные каждым блоком From File. Модель также содержит три блока кнопок обратного вызова, которые можно использовать для создания файлов с входными данными с использованием каждого формата, поддерживаемого блоком «Из файла».
Модель использует обратный вызов PreLoadFcn для:
Создайте и сохраните данные временных рядов в файле inputData.mat .
Создайте и сохраните входные данные для шины в файле busData.mat.
Создайте объект Simulink.Bus, определяющий тип выходных данных для блока From File, который загружает данные для шины.
Используйте блоки кнопки обратного вызова для создания данных в нужном формате перед моделированием модели. Чтобы создать данные, щелкните, чтобы выбрать блок кнопки обратного вызова, и щелкните еще раз, чтобы запустить код. Код каждого блока кнопки обратного вызова можно просмотреть в диалоговом окне блока или в инспекторе свойств.
Создать данные о времени и сигнале
Блок From File поддерживает загрузку данных, хранящихся в объектах временных рядов, и данных, хранящихся в массиве. Данные, которые вы загружаете с помощью блока From File, должны содержать значение времени, соответствующее каждому значению выборки. В этом примере создаются и загружаются данные за десять секунд, представляющие синусоиду.
Сначала создайте вектор времени. Когда вы загружаете данные с помощью блока From File, тип данных для значений времени должен быть double , а значения времени должны увеличиваться монотонно.
Используйте выражение в этом примере, чтобы создать равномерно распределенный вектор времени для входного сигнала, особенно при моделировании дискретных входных сигналов. MATLAB® поддерживает несколько других методов для создания равномерно распределенного вектора времени, но другие методы могут привести к ошибкам округления с двойной точностью во временных данных, что может привести к неожиданным результатам моделирования.
Теперь создайте данные сигнала, используя функцию sin. Образцы значений, которые вы загружаете с помощью блока From File, не должны содержать значений NaN , Inf или -Inf.
Загрузить данные временного ряда
Загрузка и ведение журнала Simulink® обычно используют объекты временных рядов для передачи данных временных рядов в моделирование и из него. Блок From File поддерживает загрузку различных входных данных, когда вы сохраняете данные в файле MAT как объект временных рядов. Загружаемые значения сигналов могут быть:
Встроенный числовой тип данных, отличный от half , int64 и uint64 ; тип данных с фиксированной запятой с длиной слова до 32 бит; или перечисляемый тип данных.
Вещественный или сложный.
Скалярный, векторный или многомерный.
Когда вы загружаете данные в объект временных рядов с помощью блока «Из файла», вы должны сохранить данные временных рядов в файле MAT Версии 7.3. Блок To File сохраняет данные в файл MAT Версии 7.3. Когда вы загружаете данные из файла, созданного с помощью блока To File, вам не нужно преобразовывать версию файла.
Код для блока кнопки обратного вызова с надписью Создать файл с данными временных рядов для загрузки:
Создает данные времени и сигнала в виде векторов-строк.
Транспонирует векторы-строки в векторы-столбцы, как это требуется для создания объекта временных рядов со скалярными значениями данных.
Создает объект временной последовательности для хранения данных.
Сохраняет объект временных рядов в файле MAT версии 7.3.
Чтобы загрузить данные временных рядов, вы можете запустить код для создания файла inputData.mat с помощью командного окна MATLAB или выбрать, а затем нажать Создать файл с данными временных рядов, чтобы загрузить блок кнопки обратного вызова. Затем смоделируйте модель и просмотрите загруженные данные в блоке Dashboard Scope.
Загрузить данные массива
Вы можете использовать блок From File для загрузки скалярных или векторных данных сигнала, отформатированных как массив, где первая строка содержит временные данные, а последующие строки содержат выборочные значения. Когда вы загружаете данные массива с помощью блока From File, выборочные значения должны быть вещественными и двойными. Блок From File может загружать данные массива из любых версий файла MAT.
Код для блока кнопки обратного вызова с надписью Создать файл с данными массива для загрузки создает данные времени и сигнала, объединяет векторы-строки в массив и сохраняет массив в файл MAT Версии 7.
Чтобы загрузить данные массива, вы можете запустить код для создания файла inputData.mat с помощью командного окна MATLAB или выбрать, а затем нажать Создать файл с данными массива, чтобы загрузить блок кнопки обратного вызова. Затем смоделируйте модель и просмотрите загруженные данные в блоке Dashboard Scope.
Загрузить данные шины
Блок From File поддерживает загрузку структуры, содержащей объекты временных рядов, в качестве входных данных для шины. Каждый объект временных рядов в структуре может содержать любые данные, поддерживаемые при загрузке данных из одного объекта временных рядов.
Когда вы загружаете данные шины с помощью блока From File, вы должны указать параметр Тип выходных данных как объект Simulink.Bus, который определяет шину. Иерархия и имена полей в структуре, содержащей данные шины, должны соответствовать иерархии и именам элементов объекта Bus, который определяет тип выходных данных.
У блока From File, который загружает данные шины, параметр Тип выходных данных настроен как Bus: SinusoidBus . Обратный вызов PreLoadFcn для модели и код для создания файла с данными шины для загрузки блока кнопки обратного вызова определяют объект SinusoidBus.
Объект Bus определяет иерархию шины, а также свойства элементов шины, такие как имя и тип данных. Объект Bus в этом примере определяет иерархию шины, имена для сигналов, содержащихся в шине, и тип данных для вложенной шины. Шина SinusoidBus содержит один сигнал Cosine и вложенную шину SineBus, которая содержит два сигнала Sine и BigSine.
Дополнительную информацию об определении шин с помощью объектов Simulink.Bus см. в разделе Задание свойств шины с помощью типов данных объекта Simulink.Bus.
Создать данные шины для загрузки блока кнопки обратного вызова создает структуру объектов временных рядов с иерархией и именами полей, которые соответствуют иерархии и именам элементов объекта SinusoidBus, и сохраняет структуру в файл MAT Версии 7.3.
Чтобы загрузить данные шины, вы можете запустить код для создания файла busData.mat с помощью командного окна MATLAB или выбрать, а затем щелкнуть блок Create bus data to load Callback Button. Затем смоделируйте модель и просмотрите загруженные данные в блоке Dashboard Scope.
Когда вы загружаете входные данные для шины с помощью блока «Из файла», вам не нужно предоставлять данные для каждого элемента в шине. Чтобы частично указать входные данные для шины, можно опустить соответствующее поле в структуре или указать его значение как [] . Когда вы частично задаете данные для шины, которая включает вложенную шину, вы можете указать всю вложенную шину как [] и блок From File предоставляет базовые значения для всех элементов вложенной шины.
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 , используя любой из входных аргументов в предыдущих синтаксисах.< /p>
Примеры
Импорт и отображение изображения
Импортируйте и отобразите образец изображения ngc6543a.jpg .
Вывод A — это класс uint8, поскольку вспомогательная функция imread возвращает пустые результаты для цветовой карты и альфа-канала.
Импортировать текстовый файл и указать разделитель и заголовок столбца
В текстовом редакторе создайте файл ASCII с разделителями-пробелами и заголовками столбцов с именем myfile01.txt .
Импортируйте файл, указав разделитель пробелов и заголовок одного столбца.
Просмотреть столбцы 3 и 5.
Импортировать текстовый файл и вернуть обнаруженный разделитель
В текстовом редакторе создайте файл ASCII с разделителями-запятыми и назовите его myfile02.txt .
Импортируйте файл и отобразите выходные данные и обнаруженный символ-разделитель.
Импорт данных из буфера обмена
Скопируйте следующие строки в буфер обмена. Выделите текст, щелкните правой кнопкой мыши и выберите "Копировать".
Импортируйте данные из буфера обмена в MATLAB®, введя следующее.
Входные аргументы
filename — Имя и расширение файла для импорта
вектора символов | строковый скаляр
Имя и расширение файла, чтобы импортировать в виде вектора символов или строкового скаляра. Если importdata распознает расширение файла, он вызывает вспомогательную функцию MATLAB, предназначенную для импорта связанного формата файла (например, load для MAT-файлов или xlsread для электронных таблиц). В противном случае importdata интерпретирует файл как файл ASCII с разделителями.
Для файлов и электронных таблиц ASCII importdata ожидает найти числовые данные в прямоугольной форме (то есть, как матрица). Текстовые заголовки могут появляться над числовыми данными или слева от них следующим образом:
Заголовки столбцов или текст описания файла в верхней части файла над числовыми данными.
Инструмент импорта позволяет просматривать и импортировать данные из файлов электронных таблиц, текстовых файлов с разделителями и текстовых файлов фиксированной ширины. Вы можете в интерактивном режиме выбирать данные для импорта и повторно использовать сценарий или функцию, созданную инструментом, для импорта других подобных файлов.
Откройте инструмент импорта
MATLAB ® Toolstrip: на вкладке "Главная" в разделе "Переменная" нажмите "Импорт данных".
Командная строка MATLAB: введите uiimport( filename ) , где filename — это вектор символов, определяющий имя текстового файла или файла электронной таблицы.
Примеры
Выберите диапазон для импорта
Импорт диапазонов данных из текстового файла с разделителями табуляцией и замена нечисловых значений в файле.
Перетащите курсор, чтобы выбрать ячейки для импорта. Нажмите Ctrl, чтобы выбрать несмежные диапазоны.
Измените поле Строка имен переменных, чтобы указать строку, которую инструмент импорта должен использовать для имен переменных.
По умолчанию NaN заменяет неимпортируемые значения в числовых ячейках. Однако вы можете изменить это значение на любое другое числовое значение. Укажите, как обрабатывать неимпортируемые значения, на вкладке "Импорт" в разделе "Неимпортируемые ячейки".
В качестве альтернативы можно исключить из импорта любую строку, содержащую неимпортируемую ячейку.
Нажмите «Импортировать выбранное» . Новые векторы-столбцы появятся в вашей рабочей области.
Укажите десятичный разделитель и формат даты
Импортировать даты и числа из текстового файла в таблицу. Укажите десятичный разделитель для числовых значений в файле и пользовательский формат для дат.
В разделе «Импортированные данные» выберите «Таблица», чтобы импортировать данные файла в табличную переменную. В этом примере третий столбец данных содержит денежные суммы, где десятичный разделитель — запятая. В разделе «Разделители» выберите «Параметры разделителя». Затем в разделе "Десятичный разделитель" выберите , (запятая).
Инструмент импорта соответствующим образом преобразует денежные значения.
Укажите, что столбец содержит данные о дате или времени, изменив тип данных для столбца на ДАТА/ВРЕМЯ. Щелкните другие форматы даты. . Прокрутите список вниз, чтобы ввести собственный формат даты.
Нажмите Import Selection, чтобы импортировать таблицу.
Импорт данных из текстового файла путем интерактивного выбора данных. Вы также можете повторить эту операцию импорта для нескольких текстовых файлов, используя функцию создания кода инструмента импорта.
Интерактивный выбор данных
В этом примере показано, как импортировать данные из текстового файла с заголовками столбцов и числовыми данными с помощью инструмента импорта. Файл в примере,grades.txt, содержит следующие данные:
Чтобы создать файл, скопируйте и вставьте данные с помощью любого текстового редактора.
На вкладке "Главная" в разделе "Переменная" нажмите "Импорт данных" .Либо щелкните правой кнопкой мыши имя файла в браузере текущей папки и выберите «Импорт данных». Откроется инструмент импорта.
Инструмент импорта распознает файл grades.txt с фиксированной шириной. В разделе «Импортированные данные» выберите способ импорта данных. В следующей таблице показано, как данные импортируются в зависимости от выбранного параметра.
Выбран вариант | Как импортируются данные |
---|---|
Таблица | Импортировать выбранные данные в виде таблицы. |
Векторы-столбцы | Импортировать каждый столбец выбранных данных как отдельный вектор m-by-1. |
td> | |
Числовая матрица | Импорт выбранных данных в виде числового массива m на n. |
Массив строк | Импортировать выбранные данные в виде массива строк, содержащего текст. |
Массив ячеек | Импортировать выбранные данные в виде массива ячеек, который может содержат несколько типов данных, например числовые данные и текст. |
В разделе "Параметры разделителя" вы можете указать, должен ли инструмент импорта использовать точку или запятую в качестве десятичного разделителя для числовых значений.
Дважды щелкните имя переменной, чтобы переименовать ее.
Вы также можете использовать поле "Строка имен переменных" в разделе "Выбор", чтобы выбрать строку в текстовом файле, которую инструмент импорта должен использовать для имен переменных.
Инструмент импорта выделяет неимпортируемые ячейки. Неимпортируемые ячейки — это ячейки, содержащие данные, которые нельзя импортировать в формате, указанном для этого столбца. В этом примере ячейка в строке 3 столбца C считается неимпортируемой, поскольку пустая ячейка не является числовой. Цвета выделения соответствуют предлагаемым правилам, чтобы данные соответствовали числовому массиву. Вы можете добавлять, удалять, изменять порядок или редактировать правила, например изменять значение замены с NaN на другое значение.
Все правила применяются только к импортированным данным и не изменяют данные в файле. Каждый раз, когда вы импортируете в матрицу или числовые векторы-столбцы, а диапазон включает нечисловые данные, вы должны указать правила.
Чтобы увидеть, как импортируются ваши данные, наведите курсор на отдельные ячейки.
Когда вы нажимаете кнопку "Импортировать выбранное" , инструмент импорта создает переменные в вашей рабочей области.
Чтобы узнать больше о работе с инструментом импорта, посмотрите это видео.
Импорт данных из нескольких текстовых файлов
Чтобы выполнить одну и ту же операцию импорта для нескольких файлов, используйте функцию генерации кода инструмента импорта. Если вы импортируете файл один раз и генерируете код из инструмента импорта, вы можете использовать этот код, чтобы упростить повторение операции. Инструмент импорта создает программный сценарий, который можно редактировать и запускать для импорта файлов, или функцию, которую можно вызывать для каждого файла.
Предположим, у вас есть набор текстовых файлов в текущей папке. Файлы называются от myfile01.txt до myfile25.txt, и вы хотите импортировать данные из каждого файла, начиная со второй строки. Сгенерируйте код для импорта всего набора файлов следующим образом:
Откройте один из файлов в инструменте импорта.
Нажмите «Импортировать выборку» и выберите «Создать функцию». Инструмент импорта создает код, аналогичный следующему отрывку, и открывает код в редакторе.
Сохранить функцию.
В отдельном файле программы или в командной строке создайте цикл for для импорта данных из каждого текстового файла в массив ячеек с именем myData :
Каждая ячейка в myData содержит массив данных из соответствующего текстового файла. Например, myData содержит данные из первого файла myfile01.txt .
Читайте также: