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

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

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

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

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

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

Примечание

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

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

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

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

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

Блоки Simulink, который Поддержка Многомерные Сигналы

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

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

    Отдельное окно с таблицей Simulink Block Data Type Support открывается.

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

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

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

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

Как пример того, как параметры выходного значения и Интерпретируют векторные параметры, когда 1D параметр исходного блока определяет размерность своего выхода, рассматривает блок Constant. Этот блок выводит постоянный сигнал, равный его параметру Постоянного значения. Следующая таблица иллюстрирует, как размерность параметра Постоянного значения и установка Интерпретировать векторных параметров как 1D параметр определяют размерность блока выход.

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

скаляр

off

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

скаляр

on

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

Матрица 1 на n

off

Матрица 1 на n

Матрица 1 на n

on

N-вектор

Матрица N-1

off

Матрица N-1

Матрица N-1

on

N-вектор

Матрица m на n

off

Матрица m на n

Матрица m на n

on

Матрица m на n

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

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

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

Сигнал и правила измерения параметра

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

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание

    Можно сконфигурировать Simulink, чтобы отобразить предупреждающее сообщение или сообщение об ошибке, если преобразование вектора или матрицы происходит во время симуляции. Смотрите входное преобразование блока Vector/matrix для получения дополнительной информации.

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

Скалярное расширение является преобразованием скалярного значения в нескалярный массив. Много блоков 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

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

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

The virtual bus contains a vector, scalar, and virtual bus. The nested bus contains two arrays.

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, который указывает, что порт соответствует виртуальной шине. Вторым элементом является количество вершин (4). Последующие элементы следуют за тем же шаблоном что касается сигналов нешины.

  • Выходной порт первой вершины имеет одну размерность (1), и значением в той размерности является 2.

  • Выходной порт второй вершины имеет одну размерность (1), и значением в той размерности является 1.

  • Выходной порт третьей вершины имеет три измерения (3), и значениями в тех размерностях является 4 5 6.

  • Выходной порт четвертой вершины имеет пять размерностей (5) и значениями в тех размерностях является 2 3 4 5 6.

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

The virtual bus contains a vector, scalar, and nonvirtual bus. The nested bus contains two arrays.

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

Второй элемент указывает на три вершины вместо четырех вершин, потому что невиртуальная шина обработана как скаляр. Третья вершина соответствует блоку Bus Creator, который выводит невиртуальную шину. Выходной порт третьей вершины имеет одну размерность (1), и значением в той размерности является 1.

Похожие темы