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

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

  • Блок Inport

  • Блок Enable

  • Инициируйте блок, который имеет основанное на ребре (повышение, падение или любой) триггерный тип

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

Совет

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

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

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

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

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

    Примечание

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

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

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

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

  • Задайте данные непосредственно, с помощью одной из форм входных данных, описанных в Формах Входных данных.

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

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

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

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

  • Разрешать порт как предпоследний элемент в списке

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

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

in1, [], in3

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

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

Примечание

Когда вы задаете данные 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:

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

  • Объект MATLAB timeseries

  • Объект MATLAB timetable

  • Объект matlab.io.datastore.SimulationDatastore

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

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

Примечание

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

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

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

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

Примечание

Эта документация об импортировании данных о timeseries MATLAB включает примеры корневых блоков Inport. Если в частности не отмечено в противном случае, примеры применимы к корневому уровню, Включают, Триггер, и От блоков Рабочей области.

Загрузка данных о timeseries MATLAB к входным параметрам Корневого Уровня

Измерение времени

Когда вы создаете объект MATLAB timeseries импортировать данные к 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.

Загрузка данных о расписании MATLAB к входным параметрам Корневого Уровня

В целом можно загрузить 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, чтобы быть тем же значением как поле 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).

Из Рабочей области, Из Файла и Редактора Сигнала блокирует обнаружение пересечения нулем поддержки. Если входной порт корневого уровня соединяется с одним из тех блоков, можно задать время пересечения нулем при помощи дублирующейся записи времени.

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

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

  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:

  • Блок 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, чтобы базироваться Inports

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

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

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

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

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

Смотрите также

Блоки

Классы

Связанные примеры

Больше о