Можно загрузить данные от рабочей области до импорта корневого уровня, смоделированного с помощью одного из этих блоков:
Эти блоки импортируют данные из рабочей области на основе значения Configuration Parameters> Data Import/Export> параметр Input.
Совет
Чтобы импортировать много сигналов к входным портам корневого уровня, рассмотрите использование инструмента Root Inport Mapper. Для получения дополнительной информации смотрите Корень Карты Данные сигнала Inport.
Можно также импортировать данные из рабочей области с помощью блока From Workspace. Для получения дополнительной информации см. документацию 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 port.
Временные стоимости, которые вы задаете в параметре Input, не управляют временами использование решателя. Решатели имеют свою собственную логику для распространения времени и могут потребовать входных данных в значении произвольного момента времени. Установка параметра Interpolate для входного блока корневого уровня (например, блока Inport корневого уровня) задает, как обработать выход на временных шагах, для которых не существуют никакие соответствующие данные о рабочей области.
Временные стоимости, заданные в параметре Input, не могут быть разреженными или включать NAN
или Inf
значения.
Если вы выбираете опцию Interpolate data для соответствующего Inport, Enable, или блока 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
массив для корневого импорта, который управляет подсистемой вызова функций.
Структура — видит структуры данных загрузки к входным параметрам Корневого Уровня.
Для сигналов шины используйте структуру с элементом данных для каждого листового сигнала, с помощью одного из этих форматов:
timeseries
MATLAB объект
timetable
MATLAB объект
matlab.io.datastore.SimulationDatastore
объект
Пустая матрица
Другая структура, с элементами данных для каждого сигнала, которые сопоставимы с этими требованиями для структуры для данных о шине
Примечание
Когда вы задаете timetable
данные, чтобы загрузить, timetable
может содержать данные только для одного сигнала.
Сгенерировать Simulink.SimulationData.Dataset
объект от корневого уровня, который Inport блокирует в модели, можно использовать createInputDataset
функция. Сигналы в сгенерированном наборе данных имеют свойства блоков Inport и соответствующих наземных значений в запуске модели и временах остановки. Можно создать timeseries
и timetable
объекты в течение времени и значения для сигналов для загрузки. Другие сигналы используют наземные значения. Каждый timetable
объект должен содержать данные только для одного сигнала.
Можно загрузить в данные о входном порте корневого уровня, заданные
MATLABtimeseries
объект, который находится в рабочей области.
Примечание
Эта документация об импортировании данных о 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 как список, разделенный запятыми, 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 = startTime + sampleTime*(0:numSteps-1)'; Используйте оператор двоеточия, чтобы рассчитать с шагом 1 от нуля до желаемого количества временных шагов минус один, для первой точки, Например, используйте этот код, чтобы создать равномерно распределенный временной вектор, который запускается в T1 = 1 + 0.2*(0:100)' Примечание Не используйте выражение в этой форме: 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:
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)
.