Можно загрузить данные от рабочей области до импорта корневого уровня, смоделированного с помощью одного из этих блоков:
Блок Inport
Блок Enable
Инициируйте блок, который имеет основанное на ребре (повышение, падение или любой) триггерный тип
Эти блоки импортируют данные из рабочей области на основе значения Configuration Parameters> Data Import/Export> параметр Input.
Чтобы импортировать много сигналов к входным портам корневого уровня, рассмотрите использование инструмента Root Inport Mapper. Для получения дополнительной информации смотрите Корень Карты Данные сигнала Inport.
Можно также импортировать данные из рабочей области с помощью блока From Workspace. Для получения дополнительной информации смотрите Из документации Рабочей области и Данных о Загрузке для Входного Теста.
Можно задать входные данные вручную, с помощью параметра конфигурации Input. Чтобы загрузить много сигналов к входным портам корневого уровня, рассмотрите использование инструмента Root Inport Mapping, который автоматически задает в параметре Input данные, вы сопоставляете использование инструмента. Для получения дополнительной информации смотрите, что Данные о Карте Используют Корневой Инструмент Картопостроителя Inport.
Выберите Configuration Parameters> Data Import/Export> параметр Input.
Использование параметра конфигурации Input независимо от установки для параметра конфигурации Format для сохранения записанных данных.
Введите внешнюю входную спецификацию в смежное окно редактирования и нажмите Apply. Для списка форм данных можно задать, видеть Формы Входных данных.
В Поле ввода задайте вход сигнала с помощью одного из этих подходов:
Создайте данные во времени выполнения для каждого шага времени симуляции с помощью входа u = UT(t)
для любого функция MATLAB® (выраженный как строка) или выражение MATLAB.
Задайте данные непосредственно, с помощью одной из форм входных данных, описанных в Формах Входных данных.
Если вы задаете данные Dataset
, задаете только один объект Dataset
для параметра Input. Не включайте его в список, разделенный запятыми.
Каждая переменная или выражение должны оценить к соответствующему объекту, который соответствует определенному входному порту корневого уровня в модели. Каждая переменная или выражение в списке должны оценить к соответствующему объекту, который соответствует одному из входных портов корневого уровня модели. Первый элемент соответствует первому входному порту корневого уровня, второму к второму входному порту корневого уровня, и так далее. Размерности для каждой выборки данных должны совпадать с размерностями данных, заданных во входных параметрах блоков.
Для блока Enable или Trigger сигнал, управляющий разрешением или триггерным портом, должен быть последним элементом в списке, разделенном запятыми. Если вы имеете и разрешение и триггерный порт, то задаете:
Разрешать порт как предпоследний элемент в списке
Триггерный порт как последний элемент
Используйте пустую матрицу, чтобы задать наземные значения для порта. Например, чтобы загрузить данные для входных портов 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, чтобы Базироваться Inports.
Когда вы задаете данные timetable
, чтобы загрузить, timetable
должен содержать данные только для одного сигнала.
Для получения информации об импортировании данных о шине смотрите Данные о Шине Загрузки к Входным портам Корневого Уровня.
Временные стоимости, которые вы задаете в параметре Input, не управляют временами использование решателя. Решатели имеют свою собственную логику для распространения времени и могут потребовать входных данных в значении произвольного момента времени. Установка параметра Interpolate для входного блока корневого уровня (например, блока Inport корневого уровня) задает, как обработать вывод на временных шагах, для которых не существуют никакие соответствующие данные о рабочей области.
Временные стоимости, заданные в параметре Input, не могут быть разреженными или включать значения Inf
или NAN
.
Если вы выбираете опцию Interpolate data для соответствующего Inport, Включаете, или блок Trigger, Simulink® линейно интерполирует или экстраполирует входные значения по мере необходимости.
Simulink разрешает символы, используемые во внешней входной спецификации, как описано в Разрешении Символа. Команда sim
предусматривает некоторые возможности импорта данных, которые доступны только для программируемой симуляции.
Если вы используете объект Simulink.SimulationData.Dataset
, который включает объект matlab.io.datastore.SimulationDatastore
как элемент, то данные, хранимые в персистентном устройстве хранения данных, передаются потоком в из файла. Для получения дополнительной информации смотрите Загрузку Большие данные для Симуляций.
Можно использовать объект Dataset в качестве значения для Configuration Parameters> Data Import/Export> параметр Input. Задайте только один объект Dataset
и не включайте его в список, разделенный запятыми. Число элементов в Dataset
должно совпадать с количеством входных портов корневого уровня.
Объект Dataset
может включать элементы с различными типами данных.
Для отдельных данных сигнала нешины можно задать эти типы данных для элементов Dataset
:
timeseries
timetable
matlab.io.datastore.SimulationDatastore
Векторы double
или структура данных double
Simulink.SimulationData.Signal
, Simulink.SimulationData.State
или объект Simulink.SimulationData.DataStoreMemory
Массив, который удовлетворяет одно из этих требований:
Массив со временем в первом столбце и остальных столбцах каждое соответствие входному порту. Смотрите Массивы данных Загрузки к Входным параметрам Корневого Уровня.
Массив nx1
для корневого импорта, который управляет подсистемой вызова функций.
Структура — видит структуры данных загрузки к входным параметрам Корневого Уровня.
Для сигналов шины используйте структуру с элементом данных для каждого листового сигнала, с помощью одного из этих форматов:
Объект MATLAB timeseries
Объект MATLAB timetable
Объект matlab.io.datastore.SimulationDatastore
Пустая матрица
Другая структура, с элементами данных для каждого сигнала, которые сопоставимы с этими требованиями для структуры для данных о шине
Когда вы задаете данные timetable
, чтобы загрузить, timetable
может содержать данные только для одного сигнала.
Чтобы сгенерировать объект Simulink.SimulationData.Dataset
от корневого уровня, Inport блокируется в модели, можно использовать функцию createInputDataset
. Сигналы в сгенерированном наборе данных имеют свойства блоков Inport и соответствующих наземных значений в образцовом запуске и временах остановки. Можно создать timeseries
и объекты timetable
в течение времени и значения для сигналов для загрузки. Другие сигналы используют наземные значения. Каждый объект timetable
должен содержать данные только для одного сигнала.
Можно загрузить в данные о входном порте корневого уровня, заданные объектом
MATLAB
, который находится в рабочей области.timeseries
Эта документация об импортировании данных о timeseries MATLAB включает примеры корневых блоков Inport. Если в частности не отмечено в противном случае, примеры применимы к корневому уровню, Включают, Триггер, и От блоков Рабочей области.
Когда вы создаете объект MATLAB timeseries
импортировать данные к 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 смотрите, Создают Массив структур (MATLAB).
Можно задать структуры для модели в целом или на основе на порт. Для получения информации об определении на структуры порта для параметра Input, смотрите Структуры для Всех Портов или для Каждого Порта.
Структура всегда включает подструктуру сигналов, которая содержит поле значений и поле размерностей. В зависимости от задачи моделирования, которую вы хотите выполнить, структура может также включать поле времени. Форма структуры, которую вы используете, зависит от типа сигналов, для которых вы импортируете данные:
Дискретные сигналы (сигнал задан в равномерно расположенных с интервалами значениях времени) — Использование структура, которая имеет пустой временной вектор. Задайте поле signals
, которое содержит массив подструктур, каждая из которых соответствует образцовому входному порту.
Непрерывные сигналы (сигнал задан для всех значений времени) — подход, который вы используете, зависит от того, представляют ли данные (непрерывную) плавную кривую или кривая, которая имеет разрывы (скачки) в ее (дискретной) области значений. Задайте поле signals
, которое содержит массив подструктур, каждая из которых соответствует образцовому входному порту. Можно задать поле time
, которое содержит временной вектор. Смотрите Задают Данные Времени.
Для примеров импортирования данных для дискретных и непрерывных сигналов см.:
Можно задать одну структуру, чтобы предоставить вход всем входным портам корневого уровня в модели, или можно задать отдельную структуру для каждого порта.
Формат на структуру порта состоит из отдельной структуры-с-разовым или структуры-без-разового для каждого порта. Структура входных данных для каждого имеет только одно поле signals
. Чтобы задать эту опцию, введите имена структур в текстовом поле Input как список, разделенный запятыми, in1, in2,..., inN
. Значение in1
является данными для первого входного порта в модели, in2
для второго входного порта, и так далее.
Задавать одну структуру для всех портов:
Поле values
должно содержать массив входных параметров для соответствующего входного порта. Если вы задаете временной вектор, каждый вход должен соответствовать временной стоимости, заданной в поле time
.
Если входные параметры для порта являются скалярными или векторными значениями, поле values
должно быть массивом M-by-N
. Если вы задаете временной вектор, M
должен быть количеством моментов времени, заданных полем time
, и N
является продолжительностью каждого векторного значения.
Если входные параметры для порта являются матрицами (2D массивы), поле values
должно быть массивом M-by-N-by-T
. M
и N
являются размерностями каждого матричного входа, и T
является количеством моментов времени. Например, предположите, что вы хотите ввести в 51 раз выборки 4 5 матричного сигнала в один из входных портов в вашей модели. Затем соответствующее поле dimensions
структуры рабочей области должно равняться [4 5]
, и массив values
должен иметь размерности 4-by-5-by-51
.
Поле dimensions
задает размерности входа. Если каждый вход является скаляром или вектором (1D массив) значение, поле dimensions
должно быть скалярным значением, задающим длину вектора (1 для скаляра). Если каждый вход является матрицей (2D массив), поле 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; например, Из Рабочей области, Из Файла и Редактора Сигнала блокирует обнаружение пересечения нулем поддержки. Если входной порт корневого уровня соединяется с одним из тех блоков, можно задать время пересечения нулем при помощи дублирующейся записи времени. |
В первом примере рассмотрите следующую модель, которая имеет один входной порт:
Создайте входную структуру для загрузки в 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:
Блок In1
принимает два сигнала (блоку установили параметр Port dimensions на 2
).
Блок 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)
.