Модели Simulink Используя сигналы Переменного Размера

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

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

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

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

    sldemo_varsize_basic

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

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

  3. Так, чтобы вы видели имена блоков в модели, очистите Display> Hide Automatic Names.

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

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

Вывод от блока switch является размером 2D переменного размера имеющим сигнала 3x2. Когда вы выбираете Allow различный параметр размеров ввода данных на блоке 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

Поле valueDimensions регистрирует размерности сигнала переменного размера. Чтобы получить размерности, введите:

simout2.signals.valueDimensions

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

ans =

     3     2
     3     2
     1     1

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

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

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

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

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

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

Остаток от модели показывает различные операции, которые возможны с сигналами переменного размера. Операции включают использование блока Gain, блока Sum, блока Math Function, блока Matrix Concatenate. Можно соединить сигналы переменного размера с От, Goto, Присвоение Шины, Создатель Шины и блоки Селектора Шины.

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

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

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

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

sldemo_varsize_dataLengthAdapt

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

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

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

[1:9].'

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

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

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

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

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

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

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

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

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

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

sldemo_varsize_multimode

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

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

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

Подсистема Выбора Размера создает индексную стоимость от значения режима. В этом примере индексными значениями является [1 3], [1 2] и [1 1].

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

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

Похожие темы