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

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

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

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

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

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

Примечание

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

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

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

  • Отобразите размерности непосредственно на блоке. Используйте этот метод, чтобы проследить размерности сигнала вдоль пути блоков. В модели на вкладке Debug выберите Information Overlays > Signal Dimensions).

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

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

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

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

    Откроется отдельное окно с таблицей Блока Simulink Данных Type Поддержки.

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

Simulink поддерживает сигналы до 32 размерностей. Не используйте сигналы с более чем 32 размерностями.

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

Исходный блок является блоком, который не имеет входов. Примеры исходных блоков включают блок Constant и блок Sine Wave. Полный список исходных блоков Simulink см. в разделе «Источники». Размерности выхода исходного блока те же, что и у его параметров выхода значения, если блок Interpret вектора параметры как 1-D параметр отключен (то есть не выбран в диалоговом окне параметров блоков). Если параметры вектора Interpret 1-D качестве параметра on, выходные размерности равны размерностям параметра выходного значения, если только размерности параметра не N-by-1 или 1-by-N. В последнем случае блок выводит сигнал вектора ширины N.

В качестве примера того, как параметры выходного значения и параметры вектора Interpret 1-D качестве параметра исходного блока определяют размерность его выхода, рассмотрим блок Constant. Этот блок выводит постоянный сигнал, равный его параметру Constant value. Следующая таблица иллюстрирует, как размерность параметра Constant value и установка параметров Interpret вектора 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-на-N матрица

прочь

M-на-N матрица

M-на-N матрица

на

M-на-N матрица

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

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

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

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

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

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

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

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

Размерность параметров блоков

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

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

  • Если вход является вектором, соответствующим параметром может быть или 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.

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

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

Скаляр

Нескаляр

Вход расширен, чтобы соответствовать размерностям параметра.

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

Нескаляр

Скаляр

Скалярный параметр расширен, чтобы соответствовать количеству элементов входа.

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

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

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

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

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

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

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

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

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

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

В этом примере вход блока Constant1 в блок Sum является нескалярным, и вход блока Constant2 является скалярным. Блок Sum не имеет связанного параметра. 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

Для nonbus портов результатом является массив, в котором первый элемент является количеством размерностей (в этом случае 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).

Похожие темы