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

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

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

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

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

    openExample('sldemo_varsize_basic')
    varSize = get_param(outPortHandle,'CompiledPortDimensionsMode')

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

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

  3. Так, чтобы вы видели, что имена блоков в модели, на вкладке Format, очищают Auto> Hide Automatic Block Names.

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

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

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

Сохраните данные сигнала Переменного Размера

Вы могли добавить блок To Workspace в выход от блока Switch. Поскольку модель уже имеет блок To Workspace, второй блок To Workspace сохранил бы данные к массиву сигнала под названием simout2 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

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
Подсистема Выбора Размера определяет качество сигнала данных и выводит качественное значение (1, 2, или 3). Это значение помогает выбрать длину сигнала данных в подсистеме Адаптации Длины.

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

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

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

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

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

Зависимые режимом сигналы Переменного Размера

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

Подсистема Процесса в этой модели получает сигнал переменного размера, где размер сигнала зависит от режима работы системы. Для каждого изменения режима, Stateflow® график, Управляющая логика Режима, обнаруживает, когда данные сигнализируют об изменениях размера. Это затем генерирует вызов функции сбросить блоки в подсистеме Процесса.

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

sldemo_varsize_multimode

Так, чтобы вы видели, что имена блоков, в модели, на вкладке Format, очищают Auto> Hide Automatic Block Names.

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

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

Подсистема Выбора Размера создает стоимость индекса от значения режима. В этом примере значениями индекса является [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

Обработка сигнала Переменного Размера с условно выполняемой подсистемой

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

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

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

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

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

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

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

S-функции Используя сигналы Переменного Размера

Уровень 2 S-функция MATLAB с сигналами Переменного Размера

И Уровень 2, S-функции MATLAB и S-функции C поддерживают сигналы переменного размера, когда вы устанавливаете DimensionMode для выходного порта к Variable. Также необходимо рассмотреть текущую размерность сигналов ввода и вывода в методах обновления ввода и вывода.

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

msfcndemo_varsize

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

Блоком Expand является Уровень 2 S-функция MATLAB, которая берет скалярный вход и выводит вектор из длины, обозначенной ее входным значением. Выход 1:n где n входное значение.

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

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

sfcndemo_varsize

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

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

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

Похожие темы