Можно загрузить данные из рабочей области в входной порт корневого уровня, смоделированный с помощью одного из следующих блоков:
Эти блоки импортируют данные из рабочей области на основе значения параметра 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.
Выберите параметр Configuration Parameters > Data Import/Export > Input.
Примечание
Использование параметра конфигурации Input не зависит от настройки параметра конфигурации Format для сохранения записанных данных.
Введите спецификацию внешнего входа в соседнем окне редактирования и нажатия кнопки Apply. Список форм данных, которые можно задать, см. в разделе Формы входных данных.
В поле Input задайте вход сигнала с помощью одного из следующих подходов:
Создайте данные во время выполнения для каждого временного шага симуляции с помощью входа u = UT(t)
для MATLAB® функция (выраженная как строка) или выражение MATLAB.
Задайте данные непосредственно, используя одну из форм входных данных, описанных в Формах входных данных.
Если вы задаете Dataset
данные, задайте только один Dataset
объект для параметра Input. Не включать его в список, разделенный запятыми.
Каждая переменная или выражение должны вычисляться соответствующему объекту, который соответствует определенному входному порту корневого уровня в модели. Каждая переменная или выражение в списке должны вычисляться соответствующему объекту, который соответствует одному из входных портов корневого уровня модели. Первый элемент соответствует первому входному порту корневого уровня, второй - второму входному порту корневого уровня и так далее. Размерности для каждой выборки данных должны совпадать с размерностями данных, заданными в вход параметров блоков.
Для блока Enable или Trigger сигнал, управляющий портом включения или триггера, должен быть последним элементом в списке , разделенном запятыми. Если у вас есть и порт включения, и порт триггера, задайте:
Порт enable как следующий к последнему элементу в списке
Порт триггера как последний элемент
Используйте пустую матрицу, чтобы задать значения заземления для порта. Например, чтобы загрузить данные для входных портов in1
и in3
, и использовать значения заземления для портовых in2
, введите в параметре Input следующее:
in1, [], in3
Можно предоставить входные данные в следующих форматах:
Simulink.SimulationData.Dataset
- Набор записанных данных в MATLAB timeseries
формат. Для получения дополнительной информации смотрите Загрузку данных набора данных на входы корневого уровня.
Файлы MATLAB timeseries
- Для получения дополнительной информации смотрите:
Simulink.SimulationData.DatasetRef
- Для получения дополнительной информации смотрите Загрузку Больших данных для симуляций
MATLAB- timetable
- Для получения дополнительной информации смотрите Загрузку данных расписания MATLAB в входы корневого уровня.
Массив - См. Загрузка массивов данных на входы корневого уровня.
Simulink.SimulationData.Signal
- Для получения дополнительной информации смотрите Загрузка данных, зарегистрированных в другой симуляции.
matlab.io.datastore.SimulationDatastore
- Для получения дополнительной информации смотрите Работа с большими данными для симуляций.
Структура - Чтобы упростить спецификацию внешних входных данных, можно загрузить данные для подмножества блоков входных портов корневого уровня. Этот подход избегает необходимости создавать структуры данных для портов, для которых необходимо использовать значения заземления. Для получения информации о значениях заземления см. «Инициализация сигналов и дискретных состояний». Для получения дополнительной информации о загрузке данных структуры смотрите Загрузка структур данных в входные параметры корневого уровня.
Массив структур, содержащий данные для всех входных портов.
Пустая матрица - Используйте пустую матрицу для портов, для которых вы хотите использовать значения земли, не создавая значений данных.
Выражение времени - Для получения дополнительной информации смотрите Загрузку выражений времени MATLAB в корневые входные порты.
Примечание
Когда вы задаете 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
может содержать данные только для одного сигнала.
Чтобы сгенерировать Simulink.SimulationData.Dataset
объект из блоков Inport корневого уровня в модели, можно использовать createInputDataset
функция. Сигналы в сгенерированном наборе данных имеют свойства блоков Inport и соответствующие значения земли в начале и временах остановки модели. Можно создавать timeseries
и timetable
объекты для времени и значения для сигналов для загрузки. Другие сигналы используют значения заземления. Каждый timetable
объект должен содержать данные только для одного сигнала.
Можно загрузить в входные данные входа корневого уровня, заданные MATLAB
объект, который находится в рабочей области.timeseries
Примечание
Эта документация об импорте данных timeseries MATLAB включает примеры корневых блоков Inport. Если конкретно не указано обратное, примеры применимы к Enable, Trigger и From Workspace блокам корневого уровня.
Когда вы создаете timeseries MATLAB
объект для импорта данных в Simulink, временная размерность (количество временных выборок) зависит от размерности и типа сигнальных данных.
Размерность или тип данных сигнала | Выравнивание по размерности | Пример конструктора Timeseries |
---|---|---|
Скаляр или вектор 1D | Сначала | Конструктор для скалярного сигнала. Время выравнивается по первой размерности. t = (0:10)'; ts = timeseries(sin(t), t); |
2D (включая векторы строка и столбец) или больше | В последний раз | Конструктор для матричного сигнала. Время выравнивается по последней размерности. t = 0; ts = timeseries([1 2; 3 4], t); |
2D вектор-строка, и существует только один временной шаг | В последний раз |
t = 0;
ts = timeseries([1 2], t, 'InterpretSingleRowDataAs3D', true); |
Если вы задаете enum
в timetable
данные, очистить параметр Interpolate data для соответствующего блока Inport.
В целом можно загрузить 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
поле должно быть двухэлементным вектором, чье:
Первый элемент задает количество строк в матрице
Второй элемент определяет количество столбцов
Можно задать временной вектор удвоения как часть структуры данных для импорта. Например, задайте временной вектор при импорте данных сигнала для представления непрерывного объекта или для создания теста. Чтобы протестировать дискретный алгоритм, используйте структуру с пустым временным вектором. В этой таблице приведены дополнительные рекомендации для определения значений времени на основе типа данных о сигнале, которые вы хотите загрузить.
Данные о сигнале | Рекомендация по временным данным |
---|---|
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]' Эта форма временного вектора не эквивалентна форме, которая умножается на временные шаги ( |
Неравномерно разнесенные значения | Используйте любое допустимое выражение массива MATLAB; для примера, Блоки From Workspace, From File и Signal Editor поддерживают обнаружение пересечения нулем. Если входной порт корневого уровня соединяется с одним из этих блоков, можно задать время пересечения нулем при помощи повторяющейся временной записи. |
В первом примере рассмотрим следующую модель, которая имеет один входной порт:
Создайте структуру входа для загрузки 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;
В поле Configuration Parameters > Data Import/Export > Input параметра задайте переменную a
.
В диалоговом окне 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, которое вычисляет вектор-строку, равную по длине количеству сигналов, поступающих в порты входа модели. Предположим, что в модели есть один вектор Inport, который принимает два сигнала. Кроме того, предположим, что timefcn
является пользовательской функцией, которая возвращает вектор-строку двумя длинными элементами. Вот действительные выражения входа времени для такой модели:
'[3*sin(t), cos(2*t)]' '4*timefcn(w*t)+7'
Выражение оценивается на каждом шаге симуляции, применяя результирующие значения к входным портам модели. Simulink задает переменную t
когда он запускает симуляцию. Кроме того, можно опустить временную переменную в выражениях для функций одной переменной. Для примера выражение sin
интерпретируется как sin(t)
.