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

Генерация и операции сигнала переменного размера

Эта модель примера показывает, как создать сигнал переменного размера из нескольких сигналов фиксированного размера и из единственного сигнала данных. Это также показывает некоторые операции, которые вы можете применить к сигналам переменного размера.

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

  1. В MATLAB® Командное окно, введите

    sldemo_varsize_basic

  2. В Simulink® Редактор, на вкладке Debug, выберите Information Overlays > Signal Dimensions. Запустите симуляцию или нажмите Ctrl-D.

    В редакторе Simulink отображаются размерности сигнала и стили линии. Смотрите Основы сигнала для интерпретации стилей линии сигнала.

  3. Чтобы вы могли увидеть имена блоков в модели, на вкладке Format очистите Auto > Hide Automatic Block Names.

Создайте сигнал переменного размера из сигналов фиксированного размера

Один из способов создать сигнал переменного размера - использовать блок Switch. Входные сигналы к блоку Switch могут отличаться по количеству размерностей и по размеру.

Выход из блока Switch является 2-D сигналом переменного размера с максимальным размером 3x2. Когда вы выбираете параметр Разрешить различные размеры входных данных на блоке Switch, Simulink не расширяет скалярное значение из блока Constant1.

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

Можно добавить блок To Workspace к выходу из блока Switch. Поскольку модель уже имеет блок To Workspace, второй блок To Workspace сохраняет данные в массиве сигналов с именем simout2 The values поле регистрирует фактические значения сигналов. Если зарегистрированные данные сигнала меньше максимального размера, значения заполняются NaNs или соответствующими значениями. Чтобы получить эти значения сигналов, введите:

simout2.signals.values

ans(:,:,1) =

     1    -1
    -2     2
    -3     3


ans(:,:,2) =

     1    -1
    -2     2
    -3     3


ans(:,:,3) =

     0   NaN
   NaN   NaN
   NaN   NaN

The valueDimensions поле регистрирует размерности сигнала переменного размера. Для получения размерностей введите:

simout2.signals.valueDimensions

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

ans =

     3     2
     3     2
     1     1

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

Сигнал данных (Constant5) является 3x4 матрица. Импульсный Генератор представляет управляющий сигнал, который выбирает начальное и конечное значение индекса ([1 2] или [1 3]). Затем блок Selector использует значения индекса, чтобы выбрать различные части сигнала данных на каждом временном шаге и вывести сигнал переменного размера.

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

Выход из блока Selector является либо 2x2 или 3x3 матрица. Потому что максимальная размерность для сигнала переменного размера является 3x4 матрица из сигнала данных, записанные выходные сигналы заполнены NaNs.

Используйте блоки Probe или Width, чтобы проверить текущие размерности и ширину сигнала переменного размера. В сложение можно отображать сигналы переменного размера на блоках Scope и сохранять сигналы переменного размера в рабочую область с помощью блока To Workspace.

Сигналы переменного размера процесса

Остальная часть модели показывает различные операции, которые возможны с сигналами переменного размера. Операции включают использование блоков Gain, Sum, Math Function и Matrix Concatenate. Вы можете соединить сигналы переменного размера с From, Goto, Bus Assignment, Bus Creator, и Bus Selector блоки.

Адаптация длины сигнала переменного размера

Эта модель примера соответствует гипотетической системе, где модель адаптирует длину сигнала с течением времени. Адаптация длины основана на значении управляющего сигнала. Когда управляющий сигнал попадает в один из трёх предопределённых областей значений, сигнал необработанных данных фиксированного размера изменяется на сигнал данных переменного размера.

Сигнал переменного размера соединяется с процессорным блоком, где на нем работают блоки, поддерживающие сигналы переменного размера. Блок MATLAB Function с как входными, так и выходными сигналами переменного размера допускает большую гибкость, чем другие блоки, поддерживающие сигналы переменного размера. Смотрите Поддержку Блоков Simulink для Сигналов Переменного Размера.

Чтобы открыть модель примера, в Командном Окне MATLAB, введите:

sldemo_varsize_dataLengthAdapt

Чтобы вы могли увидеть имена блоков, в модели, на вкладке Format, очистить Auto > Hide Automatic Block Names.

Создание сигнала переменного размера путем адаптации длины сигнала данных

Эта модель генерирует сигнал данных и преобразует сигнал в сигнал переменного размера. Размер сигнала зависит от значения управляющего сигнала. Сигнал необработанных данных является вектором-столбцом со значениями от 1 на 9.

[1:9].'

ans =
     1
     2
     3
     4
     5
     6
     7
     8
     9
Подсистема Size Selection определяет качество сигнала данных и выводит значение качества (1, 2 или 3). Это значение помогает выбрать длину сигнала данных в Подсистеме Адаптации Длины.

В Подсистеме Адаптации Длины Подсистема Размера Сигнала генерирует индекс на основе значения качества из Подсистемы Выбора Размера (In2). Блок Data Selector использует начальный и конечный индексы, чтобы настроить длину сигнала данных (In1) и вывести сигнал переменного размера.

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

Центральная часть модели обрабатывает сигнал переменного размера. Блок MATLAB Function добавляет нули между значениями данных таким образом, чтобы это было похоже на увеличение дискретизации сигнала. Размерность сигнала изменяется от 9 на 18. Блоки Math Function показывают различные манипуляции, которые вы можете сделать с сигналами переменного размера.

Визуализация сигнала переменного размера

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

Зависящие от режима сигналы переменного размера

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

Подсистема Process в этой модели получает сигнал переменного размера, где размер сигнала зависит от режима работы системы. Для каждого изменения режима, Stateflow® график, Mode Control Logic, обнаруживает, когда изменяется размер сигнала данных. Затем он генерирует вызов функции для сброса блоков в подсистеме Process.

Чтобы открыть модель, В Командном Окне MATLAB введите:

sldemo_varsize_multimode

Чтобы вы могли увидеть имена блоков, в модели, на вкладке Format, очистить Auto > Hide Automatic Block Names.

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

Подсистема выбора режима определяет режим обработки сигнала данных и выводит значение режима (1, 2 или 3). Это значение помогает выбрать длину сигнала данных с помощью подсистем Size Selection и Data.

Подсистема Size Selection создает значение индекса из значения mode. В этом примере значения индекса [1 3], [1 2], и [1 1].

Подсистема данных принимает сигнал данных (Constant блок) и выбирает часть сигнала данных, зависимую от режима. Выход является сигналом переменного размера с размером матрицы 3x3, 2x2, и 1x1.

Размерности сигнала необработанных данных (блок Constant) 3x3. После подключения блока To Workspace к сигнальной линии можно просмотреть сигнал в Командном окне MATLAB, набрав:

simout.signals.values

ans(:,:,1) =

     1     4     7
     2     5     8
     3     6     9

Сигнал переменного размера, сгенерированный из Подсистемы Данных, также является 3x3 матрица. Для более коротких сигналов матрица заполнена NaNs.

simout.signals.values

ans(:,:,1) =

     1   NaN   NaN
   NaN   NaN   NaN
   NaN   NaN   NaN


ans(:,:,2) =

     1     4   NaN
     2     5   NaN
   NaN   NaN   NaN


ans(:,:,3) =

     1     4     7
     2     5     8
     3     6     9

Обработка сигнала переменного размера с помощью условно выполненной подсистемы

Поскольку подсистема Process содержит блок Delay, подсистема сбрасывает и переупорядочивает сигнал на каждом временном шаге. Эта модель использует диаграмму Stateflow, чтобы обнаружить изменение размера сигнала и сбросить подсистему Process.

В диалоговом окне функционального блока и из списка Propagate sizes of variable-size signals выберите Only when enabling. Когда модель включает эту подсистему, выбор этой опции предписывает программному обеспечению Simulink распространять размеры для сигналов переменного размера внутри условно выполненной подсистемы. Размеры сигнала могут меняться только при переходе от отключенного к включенному. Для объяснения обработки изменений размера сигнала с блоками, содержащими состояния, смотрите, Как распространяются сигналы переменного размера.

Диаграмма Stateflow определяет, есть ли изменение в размере сигнала. Функция size_detect вычисляет ширину сигнала переменного размера на каждом временном шаге и сравнивает текущую ширину с предыдущей шириной. Если происходит изменение размера сигнала, график выводит выходное событие вызова функции, которое сбрасывает и переупорядочивает размеры сигнала в подсистеме Process.

Визуализация данных

Используйте блок Probe, чтобы визуализировать размер сигнала и размерность сигнала.

Поскольку сигналы n x n матрицы, сигнал размерности линии перекрываются в Возможности отображения.

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

S-функции, использующие сигналы переменного размера

Level-2 S-функцию MATLAB с сигналами переменного размера

Оба Level-2 MATLAB S-Functions и C S-Functions поддержка сигналы переменного размера, когда вы устанавливаете DimensionMode для порта выхода равной Variable. Вы также должны учитывать текущую размерность входных и выходных сигналов в методах входа и выходных параметров.

Чтобы открыть эту модель примера, в Командном Окне MATLAB, введите:

msfcndemo_varsize

Подсистема Enabled включает Level-2 MATLAB S-Function, которая показывает, как реализовать блок, который держит свои состояния до сброса. Поскольку этот блок содержит состояния и задерживает входной сигнал, размер входа может измениться только тогда, когда происходит сброс.

Блок Expand является Level-2 MATLAB S-Function, которая принимает скалярный вход и выводит вектор длины, обозначенной его входным значением. Это выход по 1:n где n - вход значение.

S-функция C с сигналами переменного размера

Чтобы открыть эту модель примера, в Командном Окне MATLAB, введите:

sfcndemo_varsize

Активированные подсистемы имеют две S-функции:

  • sfun_varsize_holdStatesUntilReset является C S-Функцией, которая имеет состояния и требует, чтобы ее вектор DWorks сбрасывался всякий раз, когда изменяются размеры входного сигнала.

  • sfun_varsize_concat1D является S-функцией C, которая реализует конкатенацию двух неориентированных векторов. Можно использовать эту функцию в подсистеме с поддержкой самостоятельно.

Похожие темы