Эта модель в качестве примера показывает, как создать сигнал переменного размера из нескольких сигналов фиксированного размера и из одного сигнала данных. Это также показывает некоторые операции, можно обратиться к сигналам переменного размера.
Для полного списка блоков, которые поддерживают сигналы переменного размера, смотрите Поддержку блока Simulink Сигналов Переменного Размера.
В Командном окне MATLAB® ввести
sldemo_varsize_basic
В Редакторе Simulink® выберите Display> Signals & Ports> Signal Dimensions. Запустите симуляцию или нажмите Ctrl-D
.
Редактор Simulink отображает размерности сигнала и стили линии. Смотрите Основы Сигнала для интерпретации стилей сигнальной линии.
Так, чтобы вы видели имена блоков в модели, очистите 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
В подсистеме Адаптации Длины подсистема Размера Сигнала генерирует индекс на основе качественного значения от подсистемы Выбора Размера (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, чтобы визуализировать значения сигналов на каждом временном шаге.