Загрузка данных на входные порты корневого уровня

Можно загрузить данные из рабочей области в входной порт корневого уровня, смоделированный с помощью одного из следующих блоков:

  • Inport блок

  • Enable блок

  • Trigger блок, который имеет тип триггера на основе ребер (поднимающийся, падающий или любой из них)

Эти блоки импортируют данные из рабочей области на основе значения параметра Configuration Parameters Data Import/Export > Input >.

Совет

Чтобы импортировать много сигналов во входные порты корневого уровня, рассмотрите использование инструмента Root Inport Mapper. Для получения дополнительной информации смотрите Map Root Inport Signal Data.

Можно также импортировать данные из рабочей области с помощью блока From Workspace. Для получения дополнительной информации см. документацию по From Workspace и Загрузка данных для Входа Тестов.

Задайте входные данные

Можно задать входные данные вручную, используя Input параметра конфигурации. Чтобы загрузить много сигналов во входные порты корневого уровня, рассмотрите использование инструмента Root Inport Mapping, который автоматически задает в параметре Input данные, которые вы сопоставляете с помощью инструмента. Для получения дополнительной информации смотрите Map Data Using Root Inport Mapper Tool.

  1. Выберите параметр Configuration Parameters > Data Import/Export > Input.

    Примечание

    Использование параметра конфигурации Input не зависит от настройки параметра конфигурации Format для сохранения записанных данных.

  2. Введите спецификацию внешнего входа в соседнем окне редактирования и нажатия кнопки Apply. Список форм данных, которые можно задать, см. в разделе Формы входных данных.

В поле Input задайте вход сигнала с помощью одного из следующих подходов:

  • Создайте данные во время выполнения для каждого временного шага симуляции с помощью входа u = UT(t) для MATLAB® функция (выраженная как строка) или выражение MATLAB.

  • Задайте данные непосредственно, используя одну из форм входных данных, описанных в Формах входных данных.

Список , разделенный запятыми

Если вы задаете Dataset данные, задайте только один Dataset объект для параметра Input. Не включать его в список, разделенный запятыми.

Каждая переменная или выражение должны вычисляться соответствующему объекту, который соответствует определенному входному порту корневого уровня в модели. Каждая переменная или выражение в списке должны вычисляться соответствующему объекту, который соответствует одному из входных портов корневого уровня модели. Первый элемент соответствует первому входному порту корневого уровня, второй - второму входному порту корневого уровня и так далее. Размерности для каждой выборки данных должны совпадать с размерностями данных, заданными в вход параметров блоков.

Для блока Enable или Trigger сигнал, управляющий портом включения или триггера, должен быть последним элементом в списке , разделенном запятыми. Если у вас есть и порт включения, и порт триггера, задайте:

  • Порт enable как следующий к последнему элементу в списке

  • Порт триггера как последний элемент

Используйте пустую матрицу, чтобы задать значения заземления для порта. Например, чтобы загрузить данные для входных портов in1 и in3, и использовать значения заземления для портовых in2, введите в параметре Input следующее:

in1, [], in3

Формы входных данных

Можно предоставить входные данные в следующих форматах:

Примечание

Когда вы задаете timetable данные для загрузки, timetable должен содержать данные только для одного сигнала.

Для получения информации об импорте данных шины смотрите Загрузка данных шины в входные порты корневого уровня.

Значения времени для параметра Входа

Значения времени, которые вы задаете в параметре Input, не управляют временем, которое использует решатель. Решатели имеют свою собственную логику распространения времени и могут потребовать входных данных в произвольном моменте времени. Установка параметра Interpolate для блока входа корневого уровня (для примера, блока Inport корневого уровня) задает, как обрабатывать выходы, в временные шаги которых нет соответствующих данных рабочей области.

Значения времени, заданные в параметре Input, не могут быть разреженными или включать NAN или Inf значения.

Загрузка данных

Если вы выбираете опцию Interpolate data для соответствующего Inport, Enable или Trigger блока, Simulink® при необходимости линейно интерполирует или экстраполирует входные значения.

Simulink разрешает символы, используемые в спецификации внешнего входа, как описано в Symbol Resolution. sim команда предоставляет некоторые возможности импорта данных, которые доступны только для программной симуляции.

Если вы используете Simulink.SimulationData.Dataset объект, который включает в себя matlab.io.datastore.SimulationDatastore объект как элемент, затем данные, хранящиеся в постоянном запоминающем устройстве, передаются из файла. Для получения дополнительной информации смотрите Загрузка Больших данных для симуляций.

Загрузка данных набора данных на входы корневого уровня

Можно использовать объект набор данных как значение для параметра Configuration Parameters Data Import/Export > Input >. Задайте только одно Dataset и не включать его в список, разделенный запятыми. Количество элементов в Dataset должен совпадать с количеством входных портов корневого уровня.

Элементы набора данных

A Dataset объект может включать элементы с различными типами данных.

Для отдельных данных нешинного сигнала можно задать эти типы данных для Dataset элементы:

  • timeseries

  • timetable

  • matlab.io.datastore.SimulationDatastore

  • double векторы или структура double данные

  • a Simulink.SimulationData.Signal, Simulink.SimulationData.State, или Simulink.SimulationData.DataStoreMemory объект

  • Массив, который удовлетворяет одному из следующих требований:

    • Массив со временем в первом столбце и оставшиеся столбцы каждый, соответствующий вход порту. Смотрите Загрузку массивов данных к входам корневого уровня.

    • Система координат nx1 массив для корневого входного порта, который управляет подсистемой вызова функций.

  • Структура - См. Загрузку структур данных к входам корневого уровня.

Для сигналов шины используйте структуру с элементом данных для каждого листового сигнала, используя один из следующих форматов:

  • A MATLAB timeseries объект

  • A MATLAB timetable объект

  • A matlab.io.datastore.SimulationDatastore объект

  • Пустая матрица

  • Другая структура с элементами данных для каждого сигнала, которые согласуются с этими требованиями для структуры для данных шины

Примечание

Когда вы задаете timetable данные для загрузки, timetable может содержать данные только для одного сигнала.

Создайте объект набора данных для блоков Inport

Чтобы сгенерировать Simulink.SimulationData.Dataset объект из блоков Inport корневого уровня в модели, можно использовать createInputDataset функция. Сигналы в сгенерированном наборе данных имеют свойства блоков Inport и соответствующие значения земли в начале и временах остановки модели. Можно создавать timeseries и timetableобъекты для времени и значения для сигналов для загрузки. Другие сигналы используют значения заземления. Каждый timetable объект должен содержать данные только для одного сигнала.

Можно загрузить в входные данные входа корневого уровня, заданные MATLAB timeseries объект, который находится в рабочей области.

Примечание

Эта документация об импорте данных timeseries MATLAB включает примеры корневых блоков Inport. Если конкретно не указано обратное, примеры применимы к Enable, Trigger и From Workspace блокам корневого уровня.

Загрузка данных Timeseries MATLAB на входы корневого уровня

Временные Размерности

Когда вы создаете timeseries MATLAB объект для импорта данных в Simulink, временная размерность (количество временных выборок) зависит от размерности и типа сигнальных данных.

Размерность или тип данных сигналаВыравнивание по размерностиПример конструктора Timeseries

Скаляр или вектор 1D

Сначала

Конструктор для скалярного сигнала. Время выравнивается по первой размерности.

t = (0:10)';
ts = timeseries(sin(t), t);

2D (включая векторы строка и столбец) или больше

В последний раз

Конструктор для матричного сигнала. Время выравнивается по последней размерности.

t = 0;
ts = timeseries([1 2; 3 4], t);

2D вектор-строка, и существует только один временной шаг

В последний раз

'InterpretSingleRowDataAs3D', true
Для примера:
t = 0;
ts = timeseries([1 2], t, 'InterpretSingleRowDataAs3D', true);

Перечисление данных

Если вы задаете enum в timetable данные, очистить параметр Interpolate data для соответствующего блока Inport.

Загрузка данных Timetable MATLAB на входы корневого уровня

В целом можно загрузить MATLAB timetable данные так же загружаются MATLAB timeseries данные. Каждый timetable должен содержать данные только для одного сигнала.

Загрузка структур данных к входам корневого уровня

Структуры данных

Можно загрузить на корневой вход порт данных из рабочей области в виде структуры, имя которой вы задаете в параметре Configuration Parameters > Data Import/Export > Input. Дополнительные сведения об определении структур MATLAB см. в разделе «Массивы структур».

Можно задать структуры для модели в целом или в относительных базисах. Для получения информации об указании структур по портам для параметра Input смотрите Структуры для всех портов или для Каждого порта.

Структура всегда включает подструктуру сигналов, которая содержит поле значений и поле размерностей. В зависимости от задачи моделирования, которую вы хотите выполнить, структура может также включать поле времени. Форма структуры, которую вы используете, зависит от типа сигналов, для которых вы импортируете данные:

  • Дискретные сигналы (сигнал задан в равномерно разнесенных значениях времени) - Используйте структуру, которая имеет пустой временной вектор. Задайте signals поле, которое содержит массив подструктур, каждая из которых соответствует входному порту модели.

  • Непрерывные сигналы (сигнал задан для всех значений времени) - Подход, который вы используете, зависит от того, представляют ли данные плавную кривую (непрерывную) или кривую, которая имеет разрывы (переходы) в области значений (дискретная). Задайте signals поле, которое содержит массив подструктур, каждая из которых соответствует входному порту модели. Можно задать time поле, которое содержит временной вектор. См. «Определение временных данных».

Для примеров импорта данных для дискретных и непрерывных сигналов смотрите:

Структуры для всех портов или для каждого порта

Можно задать одну структуру, чтобы предоставить вход всем входным портам корневого уровня в модели, или можно задать отдельную структуру для каждого порта.

Формат структуры в относительных портах состоит из отдельной структуры с течением времени или структуры без времени для каждого порта. Структура входных данных для каждого имеет только одну signals поле. Чтобы задать эту опцию, введите имена структур в поле Input text в виде списка, разделенного запятыми in1, in2,..., inN. Значение in1 - данные для первого входного порта в модели, in2 для второго входного порта и так далее.

Чтобы задать одну структуру для всех портов:

  • The values поле должно содержать массив входов для соответствующего входного порта. Если вы задаете временной вектор, каждый вход должен соответствовать значению времени, заданному в time поле.

    Если входы для порта являются скаляром или вектором значениями, values поле должно быть M-by-N массив. Если вы задаете временной вектор, M должно быть количество временных точек, заданное time поле и N - длина каждого векторного значения.

    Если входами для порта являются матрицы (2-D массивы), values поле должно быть M-by-N-by-T массив. M и N являются размерностями каждого матричного входного и T - количество временных точек. Например, предположим, что вы хотите ввести 51 временную выборку матричного сигнала 4 на 5 в один из входных портов в вашей модели. Затем соответствующее dimensions поле структуры рабочей области должно быть равным [4 5] и values массив должен иметь размерности 4-by-5-by-51.

  • The dimensions поле задает размерности входов. Если каждый вход является скаляром или вектором (1-D массив) значением, dimensions поле должно быть скалярным значением, определяющим длину вектора (1 для скаляра). Если каждый вход является матрицей (2-D массивом), dimensions поле должно быть двухэлементным вектором, чье:

    • Первый элемент задает количество строк в матрице

    • Второй элемент определяет количество столбцов

    Примечание

    Установите значение параметра Port dimensions Inport или блока Trigger равным dimensions поле соответствующей входной структуры. Если значения различаются, вы получаете сообщение об ошибке при попытке симулировать модель.

Задайте временные данные

Можно задать временной вектор удвоения как часть структуры данных для импорта. Например, задайте временной вектор при импорте данных сигнала для представления непрерывного объекта или для создания теста. Чтобы протестировать дискретный алгоритм, используйте структуру с пустым временным вектором. В этой таблице приведены дополнительные рекомендации для определения значений времени на основе типа данных о сигнале, которые вы хотите загрузить.

Данные о сигналеРекомендация по временным данным

Inport или Trigger блок с дискретным шагом расчета

Не указывайте временного вектора. Simulink загружает одно значение сигналов на каждом временном шаге.

Равномерно разнесенные дискретные сигналы

Используйте выражение в этой форме:

timeVector = timeStep * [startTime:numSteps-1]' 

Вектор транспонирован. Кроме того, поскольку время запуска является временным шагом, вам нужно задать количество шагов, которые вы хотите минус 1. Для примера задать 50 значений времени на 0,2 временных шагов:

T1 = 0.2 * [0:49]' 

Примечание

Не используйте выражение в этой форме:

timeVector = [startTime:timeStep:endTime]' 

Для примера не используйте:

T2 = [0:0.2:10]' 

Эта форма временного вектора не эквивалентна форме, которая умножается на временные шаги (T1), из-за двойной точности округления, используемого компьютерами. Simulink ожидает точных значений без двойной точности округления. Использование T2 форма может привести к несоответствиям между предоставленным временным вектором и шагами времени, предпринятыми Simulink, что приводит к неожиданным результатам симуляции.

Неравномерно разнесенные значения

Используйте любое допустимое выражение массива MATLAB; для примера, [1:5 5:10] или (1 6 10 15).

Блоки From Workspace, From File и Signal Editor поддерживают обнаружение пересечения нулем. Если входной порт корневого уровня соединяется с одним из этих блоков, можно задать время пересечения нулем при помощи повторяющейся временной записи.

Примеры определения сигналов и временных данных

В первом примере рассмотрим следующую модель, которая имеет один входной порт:

  1. Создайте структуру входа для загрузки 11 временных выборок двухэлементного вектора сигнала типа int8 в модель:

    N = 10
    Ts = 0.1
    a.time = Ts*[0:N]';
    c1 = int8([0:1:10]');
    c2 = int8([0:10:100]');
    a.signals(1).values = [c1 c2];
    a.signals(1).dimensions = 2;
    
  2. В поле Configuration Parameters > Data Import/Export > Input параметра задайте переменную a.

  3. В диалоговом окне Inport блока, на вкладке Signal Attributes, установите Port dimensions равным 2 и Data type к int8.

В качестве другого примера рассмотрим модель, которая имеет два входов.

Предположим, что вы хотите ввести синусоиду в первый порт и волну косинуса во второй порт. Задайте структуру, a, следующим образом, в рабочем пространстве MATLAB:

a.time = 0.1*[0:1]';
a.signals(1).values = sin(a.time);
a.signals(1).dimensions = 1;
a.signals(2).values = cos(a.time);
a.signals(2).dimensions = 1;

Введите имя структуры (a) в окне Configuration Parameters > Data Import/Export > Input параметра.

Примечание

В этой модели вам не нужно задавать размерность и тип данных, потому что значения по умолчанию 1 и double.

Загрузка массивов данных к входам корневого уровня

Можно загрузить на входной порт корневого уровня из рабочей области в виде массива данных, который вы задаете в параметре Configuration Parameters > Data Import/Export > Input.

Этот формат импорта состоит из вещественной (некомплексной) матрицы типа данных double. Первый столбец матрицы должен быть вектором времени в порядке возрастания. Остальные столбцы задают входные значения.

  • Каждый столбец представляет вход для другого Inport или Trigger сигнала блока (в последовательном порядке).

  • Каждая строка является входом значением для соответствующих временных точек.

Для блока Trigger сигнал, который управляет портом триггера, должен быть последним элементом данных.

Общее количество столбцов матрицы входа должно равняться n + 1, где n - общее количество сигналов, поступающих во входные порты модели.

Задайте входное выражение

Входное выражение по умолчанию для модели [t,u] и формат входа по умолчанию Array. Если вы задаете t и u в рабочем пространстве MATLAB просто выберите параметр Configuration Parameters Data Import/Export > Input > входными данными из рабочего пространства модели.

Предположим, что у вас есть модель с двумя блоками Inport:

  • The In1 блок принимает два сигнала (блок имеет Port dimensions набора параметров 2).

  • The In2 блок принимает один сигнал (блок использует значение по умолчанию для параметра Port dimensions).

Вы задаете t и u в рабочем пространстве MATLAB:

numSteps = 9;
timeStep = 0.1;
t = (timeStep*(0:numSteps))';
u = [sin(t),cos(t),4*cos(t)];

Когда симуляция запускается, данные о сигнале sin(t) и cos(t) назначены In1 и данные о сигнале 4*cos(t) назначается In2. Данные сигнала вводятся для 100 временных точек.

Примечание

Входной формат массива позволяет вам загружать только вещественные (некомплексные) скаляры или векторные данные типа double. Используйте формат структуры для ввода комплексных данных, матричных (2-D) данных и типов данных, отличных от double.

Массивы для входных портов, управляющих подсистемами вызова функций

Можно использовать массив, чтобы управлять подсистемой вызова функций через входной порт корневого уровня. Можно использовать массив или массив, который является элементом массива Dataset объект. Массив должен быть nx1 массив. Для блока Inport корневого уровня выберите параметр Output function call.

Для примера это Dataset объект имеет элемент массива x:

ds = Simulink.SimulationData.Dataset;
x = [1 3 7 8]';
ds = ds.addElement(x,'theElementName');

Эта модель использует ds набор данных в параметре Configuration Parameters > Data Import/Export > Input.

Когда вы симулируете модель, значения времени данных записанного сигнала в Подсистеме вызова функций показывают, что Подсистема вызова функций была запущена только для времени, заданного в массиве, хранящемся в ds.

>> logsout{1}.Values.Time

ans =

     1
     3
     7
     8

Загрузка выражений времени MATLAB в корневые входные порты

Задайте входное выражение

Можно использовать выражение времени MATLAB, чтобы загрузить данные из рабочей области в входной порт корневого уровня. Чтобы использовать выражение времени, введите выражение в виде строки (заключенной в одинарные кавычки) в поле «Вход» панели «Импорт/Экспорт данных». Выражение времени может быть любым выражением MATLAB, которое вычисляет вектор-строку, равную по длине количеству сигналов, поступающих в порты входа модели. Предположим, что в модели есть один вектор Inport, который принимает два сигнала. Кроме того, предположим, что timefcn является пользовательской функцией, которая возвращает вектор-строку двумя длинными элементами. Вот действительные выражения входа времени для такой модели:

'[3*sin(t), cos(2*t)]' 

'4*timefcn(w*t)+7'

Выражение оценивается на каждом шаге симуляции, применяя результирующие значения к входным портам модели. Simulink задает переменную t когда он запускает симуляцию. Кроме того, можно опустить временную переменную в выражениях для функций одной переменной. Для примера выражение sin интерпретируется как sin(t).

См. также

Блоки

Классы

Похожие примеры

Подробнее о