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

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

  • Блок Inport

  • Блок Enable

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

Эти блоки импортируют данные из рабочей области на основе значения Параметров конфигурации> Импорт/Экспорт Данных> Входной параметр.

Совет

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

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

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

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

  1. Выберите Параметры конфигурации> Импорт/Экспорт Данных> Входной параметр.

    Примечание

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

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

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

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

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

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

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

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

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

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

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

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

in1, [], in3

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

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

Примечание

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

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

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

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

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

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

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

Симулинк разрешает символы, используемые во внешней входной спецификации, как описано в Разрешении Символа. Команда sim обеспечивает, некоторые данные импортируют возможности, которые доступны только для программируемого моделирования.

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

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

Можно использовать объект Dataset в качестве значения для Параметров конфигурации> Импорт/Экспорт Данных> Входной параметр. Задайте только один объект 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, очистите Интерполировать параметр данных для соответствующего блока Inport.

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

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

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

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

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

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

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

  • Дискретные сигналы (сигнал задан в равномерно расположенных с интервалами значениях времени) — Использование структура, которая имеет пустой временной вектор. Задайте поле 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) из-за с двойной точностью округления используемого компьютерами. Симулинк ожидает точные значения без с двойной точностью округления. Используя T2 форма может привести к несоответствиям между обеспеченным временным вектором и шагами времен, сделанными Симулинком, приводящим к неожиданным результатам симуляции.

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

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

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

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

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

  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. В Параметрах конфигурации> Импорт/Экспорт Данных> Входное окно редактирования параметра, задайте переменный a.

  3. В диалоговом окне блока Inport, во вкладке Signal Attributes, размерностях Порта набора к 2 и Типе данных к int8.

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

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

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) в Параметрах конфигурации> Импорт/Экспорт Данных> Входное окно редактирования параметра.

Примечание

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

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

Можно загрузить к входному порту корневого уровня данные из рабочей области в форме массива данных, который вы задаете в Параметрах конфигурации> Импорт/Экспорт Данных> Входной параметр.

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

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

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

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

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

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

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

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

  • Блок In1 принимает два сигнала (блок имеет набор параметра размерностей Порта к 2).

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

Вы задаете t и u в MATLAB workspace:

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 корневого уровня выберите параметр вызова Выходной функции.

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

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

Эта модель использует набор данных ds в Параметрах конфигурации> Импорт/Экспорт Данных> Входной параметр.

Когда вы моделируете модель, временные стоимости регистрируемых данных сигнала в Подсистеме вызова функций показывают, что Подсистема вызова функций была инициирована только в течение времен, заданных в массиве, сохраненном в 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).

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

Блоки

Классы

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

Больше о

Была ли эта тема полезной?