Загрузите данные к Корневому Уровню Input port

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

  • Блок Inport

  • Блок Enable

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

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

Совет

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

Можно также импортировать данные из рабочей области с помощью блока From Workspace. Для получения дополнительной информации см. документацию 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 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 MATLAB объект

  • timetable MATLAB объект

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

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

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

Примечание

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

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

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

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

Примечание

Эта документация об импортировании данных о timeseries MATLAB включает примеры корневых блоков Inport. Если в частности не отмечено в противном случае, примеры применимы к корневому уровню Enable, Trigger и блоки From Workspace.

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

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

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

Можно задать структуры для модели в целом или на основе на порт. Для получения информации об определении на структуры порта для параметра 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).

From Workspace, From File и Signal Editor блокируют обнаружение пересечения нулем поддержки. Если входной порт корневого уровня соединяется с одним из тех блоков, можно задать время пересечения нулем при помощи дублирующейся записи времени.

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

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

  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.

Массивы для Input port, управляющих подсистемами вызова функций

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

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

Блоки

Классы

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

Больше о