exponenta event banner

Определение размеров сигнала

Блоки Simulink ® могут выводить одномерные, двумерные или многомерные сигналы. Пользовательский интерфейс Simulink и документация обычно относятся к 1-D сигналам как векторам и 2-D или многомерным сигналам как матрицам. Одноэлементный массив часто называют скаляром. Вектор строки - это 2-D массив, имеющий одну строку. Вектор столбца - это 2-D массив, имеющий один столбец.

  • Одномерный (1-D) сигнал состоит из ряда одномерных массивов, выводимых на частоте одного массива (вектора) на шаг времени моделирования.

  • Двумерный (2-D) сигнал состоит из ряда двумерных матриц, выводимых на частоте одной 2-D матрицы (матрицы) за блочное время выборки.

  • Многомерный сигнал состоит из ряда многомерных (двух или более измерений) матриц, выводимых с частотой по одной матрице на время блочной выборки. Можно указать многомерные массивы с любым допустимым многомерным выражением MATLAB ®, например [4 3]. Сведения о многомерных массивах см. в разделе Многомерные массивы.

Блоки симулятора различаются по размерности сигналов, которые они могут принимать или выводить. Некоторые блоки могут принимать или выводить сигналы любого размера. Некоторые могут принимать или выводить только скалярные или векторные сигналы.

Примечание

Simulink не поддерживает динамические размеры сигнала во время моделирования. То есть размерность сигнала должна оставаться постоянной во время выполнения моделирования. Однако во время моделирования можно изменить размер сигнала. См. раздел Основы сигналов переменного размера.

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

Чтобы определить размеры, которые сигнал в конечном итоге использует для моделирования, сначала обновите блок-схему (например, нажав клавиши Ctrl + D). Затем выберите один из следующих методов:

  • Отображение размеров непосредственно на блок-схеме. Этот метод используется для отслеживания размеров сигнала вдоль пути блоков. В модели на вкладке Отладка (Debug) выберите Информационные наложения (Information Overlays) > Размеры сигнала (Signal Dimensions)).

  • Проверьте размеры в Редакторе данных модели (Model Data Editor), который показывает информацию в таблице с возможностью поиска и сортировки. В таблице справа от каждой ячейки в столбце Размеры (Dimensions) показаны истинные размеры соответствующей сигнальной линии в модели. Дополнительные сведения о редакторе данных модели см. в разделе Настройка свойств данных с помощью редактора данных модели.

Блоки Simulink, поддерживающие многомерные сигналы

Таблица поддержки типа данных блока Simulink содержит столбец, идентифицирующий блоки с поддержкой многозначного сигнала.

  1. В командной строке MATLAB введите showblockdatatypetable.

    Откроется отдельное окно с таблицей Поддержка типа данных блока Simulink (Simulink Block Data Type Support).

  2. В столбце «Блок» найдите имя блока Simulink. Столбцы справа представляют собой типы данных или элементы. Символ X в столбце указывает на поддержку этой функции.

Simulink поддерживает сигналы с размерами до 32. Запрещается использовать сигналы с размерами более 32.

Определение выходных размеров исходных блоков

Исходный блок - это блок без входных данных. Примеры исходных блоков включают блок константы и блок синусоидальной волны. Полный список исходных блоков Simulink см. в разделе Источники. Выходные размеры исходного блока совпадают с размерами его выходных параметров, если блок Интерпретировать векторные параметры как 1-D параметр выключен (то есть не выбран в диалоговом окне параметров блока). Если параметр Интерпретировать векторные параметры (Interpret vector parameters as 1-D) включен, выходные размеры равны размерам параметра выходного значения, если только размеры параметра не являются N-by-1 или 1-by-N. В последнем случае блок выдает векторный сигнал ширины N.

В качестве примера того, как параметры выходного значения и параметры «Интерпретировать вектор» 1-D качестве параметра исходного блока определяют размерность его вывода, рассмотрим блок «Константа». Этот блок выдает постоянный сигнал, равный его параметру Constant value. В следующей таблице показано, как размерность параметра Constant value и установка параметров Interpret vector 1-D качестве параметра определяют размерность вывода блока.

Постоянное значениеИнтерпретировать векторные параметры как 1-DПродукция

скаляр

прочь

одноэлементный массив

скаляр

на

одноэлементный массив

1-by-N матрица

прочь

1-by-N матрица

1-by-N матрица

на

Вектор N-элемента

N-by-1 матрица

прочь

N-by-1 матрица

N-by-1 матрица

на

Вектор N-элемента

Матрица M-by-N

прочь

Матрица M-by-N

Матрица M-by-N

на

Матрица M-by-N

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

Определение выходных размеров блоков, не являющихся источниками

Если блок имеет входы, размеры его выходов после скалярного расширения совпадают с размерами его входов. (Все входы должны иметь одинаковые размеры, как описано в Signal and Parameter Dimension Rules).

Правила измерения сигналов и параметров

При создании модели Simulink необходимо соблюдать следующие правила, касающиеся размеров сигнала и параметров.

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

Все нескалярные входы в блок должны иметь одинаковые размеры.

Блок может иметь сочетание скалярных и нескалярных входов, если все нескалярные входы имеют одинаковые размеры. Simulink расширяет скалярные входы, чтобы иметь те же размеры, что и нескалярные входы (см. Скалярное расширение входов и параметров).

Правило размера параметра блока

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

  • Блок может иметь скалярные параметры, соответствующие нескалярным входам. В этом случае Simulink расширяет скалярный параметр, чтобы он имел те же размеры, что и соответствующий вход (см. Scalar Expansion of Inputs and Parameters).

  • Если входной сигнал является вектором, соответствующий параметр может быть либо N-by-1, либо 1-by-N матрицей. В этом случае Simulink применяет N матричных элементов к соответствующим элементам входного вектора. Это исключение позволяет использовать векторы строк или столбцов MATLAB, которые на самом деле являются матрицами 1-by-N или N-by-1, соответственно, для задания параметров, которые применяются к векторным входам.

Правила преобразования входных данных вектора или матрицы

Simulink преобразует векторы в матрицы строк или столбцов и матрицы строк или столбцов в векторы при следующих обстоятельствах:

  • Если векторный сигнал подключен к входу, требующему матрицы, Simulink преобразует вектор в матрицу из одной строки или одного столбца.

  • Если матрица из одного столбца или одной строки соединена со входом, требующим вектора, Simulink преобразует матрицу в вектор.

  • Если входы в блок состоят из смеси векторов и матриц, и все входы матрицы имеют один столбец или одну строку, Simulink преобразует векторы в матрицы, имеющие один столбец или одну строку соответственно.

    Примечание

    Можно настроить Simulink для отображения предупреждения или сообщения об ошибке, если во время моделирования происходит преобразование вектора или матрицы. Дополнительные сведения см. в разделе Преобразование входных данных векторных/матричных блоков.

Скалярное расширение входных данных и параметров

Скалярное расширение - это преобразование скалярного значения в нескалярный массив. Многие блоки Simulink поддерживают скалярное расширение входных данных и параметров. Описания блоков указывают, применяет ли Simulink скалярное расширение к входам и параметрам блоков.

Скалярное расширение входов относится к расширению скалярных входов в соответствии с размерами других нескалярных входов или нескалярных параметров. Когда вход в блок представляет собой смесь скалярных и нескалярных сигналов, Simulink расширяет скалярные входы в нескалярные сигналы, имеющие те же размеры, что и другие нескалярные входы. Например, скаляр 4 расширяется до вектора [4 4 4], если связанный нескаляр имеет размерность 3.

Под скалярным расширением параметров понимается расширение параметров скалярного блока в соответствии с размерами нескалярных входов.

Входные данныеСвязанный параметр блокаСкалярное расширение

Скаляр

Нескаляр

Ввод развернут для согласования размеров параметров.

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

Нескаляр

Скаляр

Расширяемый скалярный параметр соответствует количеству элементов ввода.

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

Комбинация скалярного и нескалярного

Нет соответствующего параметра

Скалярные входные данные расширяются в соответствии с размерами наибольших нескалярных входных данных.

См. разделы Скалярные и нескалярные входы и без связанного параметра.

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

В этом примере блок константы, введенный в блок усиления, является скалярным. Параметр усиления блока усиления является нескалярным. Simulink расширяет скалярный ввод в соответствии с размерами нескалярного параметра усиления, что отражено в результатах моделирования в блоке Display.

Нескалярный ввод и скалярный параметр

В этом примере блок константы, введенный в блок усиления, не является скалярным. Параметр усиления блока усиления является скалярным. Simulink расширяет скалярный параметр в соответствии с размерами нескалярного ввода из блока константы, как отражено в результатах моделирования в блоке отображения.

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

В этом примере вход блока Constant1 в блок Sum является нескалярным, а вход блока Constant2 - скалярным. Блок «Сумма» не имеет связанного параметра. Simulink расширяет скалярный ввод от Constant2 до размеров нескалярного ввода блока Constant1. Входной сигнал расширяется до вектора [3 3 3].

Получение скомпилированных размеров порта

Чтобы получить размеры сигналов порта, приостановите моделирование с помощью кнопки Step Forward. Выберите блок и используйте PortHandles параметр. Затем используйте GetCompiledPortDimensions параметр. Например, если сделать шаг вперед в этой модели и выбрать блок Константа (Constant):

ph = get_param(gcb,'PortHandles');
dim = get_param(ph.Outport,'CompiledPortDimensions')
dim =

     2     2     3

Для портов, не являющихся шинами, результатом является массив, в котором первым элементом является количество измерений (в данном случае 2), а следующие два элемента (соответствующие количеству размеров) являются значениями размеров.

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

ph = get_param(gcb,'PortHandles');
dim = get_param(ph.Outport,'CompiledPortDimensions')
dim = -2 4 1 2 1 1 3 4 5 6 5 2 3 4 5 6 

Первый элемент - -2, что указывает на то, что сигнал является шиной. Второй элемент - количество конечных узлов. Последующие элементы следуют той же схеме, что и для сигналов без шины. В этом примере третий элемент представляет количество размеров для первого сигнала в шине (в данном случае 1), и следующее число - это значение в этом измерении (2).

Связанные темы