Блоки Simulink® могут вывести одномерные, двумерные, или многомерные сигналы. Пользовательский интерфейс Simulink и документация обычно называют 1D сигналы векторами и 2D или многомерные сигналы как матрицы. Массив с одним элементом часто упоминается как скаляр. Вектор-строка является 2D массивом, который ссорится. Вектор-столбец является 2D массивом, который имеет один столбец.
Одномерный (1D) сигнал состоит из серии одномерных массивов выход на частоте одного массива (вектор) на шаг времени симуляции.
Двумерный (2D) сигнал состоит из серии двумерных массивов выход на частоте одного 2D массива (матрица) на шаг расчета блока.
Многомерный сигнал состоит из серии многомерных (две или больше размерности) массивы выход на частоте одного массива на шаг расчета блока. Можно задать многомерные массивы с любым допустимым MATLAB® многомерное выражение, такой как [4 3]. Смотрите Многомерные массивы (MATLAB) для получения информации о многомерных массивах.
Блоки Simulink варьируются по размерности сигналов, которые они могут принять или вывести. Некоторые блоки могут принять или выходные сигналы любой размерности. Некоторые могут принять или вывести только скалярные или векторные сигналы.
Simulink не поддерживает динамические размерности сигнала во время симуляции. Таким образом, размерность сигнала должна остаться постоянной, в то время как симуляция выполняется. Однако можно изменить размер сигнала во время симуляции. Смотрите Основы Сигнала Переменного Размера.
Если блок может испустить нескалярные сигналы, размерности сигналов, что блок выходные параметры зависит от параметров блоков, если блок является исходным блоком; в противном случае выходные размерности зависят от размерностей входа блока и параметров.
Чтобы определить размерности, которые сигнал в конечном счете использует в симуляции, сначала обновите блок-схему (например, путем нажатия Ctrl+D). Затем выберите один из этих методов:
Отобразите размерности непосредственно на блок-схеме. Используйте этот метод, чтобы проследить размерности сигнала вдоль пути блоков. В модели, на вкладке Debug, выбирают Information Overlays> Signal Dimensions).
Смотрите размерности в Model Data Editor, который показывает вам информацию в доступной для поиска, поддающейся сортировке таблице. В таблице правая сторона каждой ячейки в столбце Dimensions показывает истинные размерности соответствующей сигнальной линии в модели. Для получения дополнительной информации о Model Data Editor, смотрите Configure Data Properties при помощи Model Data Editor.
Таблица Simulink Block Data Type Support включает столбец, идентифицирующий блоки с поддержкой сигнала мультиразмерности.
В командной строке MATLAB введите showblockdatatypetable
.
Отдельное окно с таблицей Simulink Block Data Type Support открывается.
В столбце Блока найдите имя блока Simulink. Столбцы направо являются типами данных или функциями. X в столбце указывает на поддержку той функции.
Simulink поддерживает сигналы максимум с 32 размерностями. Не используйте сигналы больше чем с 32 размерностями.
Исходный блок является блоком, который не имеет никаких входных параметров. Примеры исходных блоков включают блок Constant и блок Sine Wave. Смотрите Источники для полного списка исходных блоков Simulink. Выходные размерности исходного блока совпадают с теми из его параметров выходного значения, если параметры вектора блока Interpret как 1D параметр выключены (то есть, не выбранный в диалоговом окне параметров блоков). Если Интерпретировать векторные параметры как 1D параметр включены, выходные размерности равняются размерностям параметра выходного значения, если размерности параметра не являются N-1 или 1 на n. В последнем случае блок выводит векторный сигнал ширины N.
Как пример того, как параметры выходного значения и Интерпретируют векторные параметры, когда 1D параметр исходного блока определяет размерность своего выхода, рассматривает блок Constant. Этот блок выводит постоянный сигнал, равный его параметру Постоянного значения. Следующая таблица иллюстрирует, как размерность параметра Постоянного значения и установка Интерпретировать векторных параметров как 1D параметр определяют размерность блока выход.
Постоянное значение | Интерпретируйте векторные параметры как 1D | Вывод |
---|---|---|
скаляр | 'off' | массив с одним элементом |
скаляр | на | массив с одним элементом |
Матрица 1 на n | 'off' | Матрица 1 на n |
Матрица 1 на n | на | N-вектор |
Матрица N-1 | 'off' | Матрица N-1 |
Матрица N-1 | на | N-вектор |
Матрица m на n | 'off' | Матрица m на n |
Матрица m на n | на | Матрица 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, который содержит вложенную шину:
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
).