Буферизация и основанная на кадре обработка

Буферный вход в кадры

Многоканальные сигналы формата кадра 1 могут быть буферизованы в многоканальные сигналы формата кадра L с помощью блока Buffer. L больше, чем 1.

Следующая фигура является графическим представлением сигнала с форматом кадра 1, преобразовываемый в сигнал формата кадра L блоком Buffer.

В следующем примере двухканальная выборка 1 на сигнал кадра буферизуется в двухканальный 4 выборки на сигнал кадра использование блока Buffer:

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

    Модель Buffer Example открывается.

  2. Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.

  3. Установите параметры можно следующим образом:

    • Signal = [1:10;-1:-1:-10]'

    • Sample time = 1

    • Samples per frame = 1

    • Form output after final data value = Setting to zero

    На основе этих параметров блок Signal from Workspace выводит сигнал с длиной кадра 1 и демонстрационным периодом 1 секунды. Поскольку вы устанавливаете установку параметра Samples per frame на 1, блок Signal From Workspace выводит одну двухканальную выборку в каждом шаге расчета.

  4. Сохраните эти параметры и закройте диалоговое окно путем нажатия на OK.

  5. Дважды кликните блок Buffer. Диалоговое окно Function Block Parameters: Buffer открывается.

  6. Установите параметры можно следующим образом:

    • Output buffer size (per channel) = 4

    • Buffer overlap = 0

    • Initial conditions = 0

    Поскольку вы устанавливаете параметр Output buffer size на 4, блок Buffer выводит сигнал кадра с форматом кадра 4.

  7. Запустите модель.

    Фигура ниже является графической интерпретацией поведения модели во время симуляции.

Примечание

Также можно установить параметр Samples per frame блока Signal From Workspace к 4 и создать тот же сигнал, показанный выше, не используя блок Buffer. Блок Signal From Workspace выполняет буферизацию внутренне в порядке вывести двухканальный кадр.

Буферные сигналы в кадры с перекрытием

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

Параметр Buffer overlap блока Buffer задает количество точек перекрытия, L. В случае перекрытия (L > 0), период кадра для вывода (Mo-L) *Tsi, где Tsi является входным демонстрационным периодом и Mo, Buffer size.

Примечание

Установите параметр Buffer overlap на отрицательную величину, чтобы достигнуть выходной частоты кадров медленнее, чем в неперекрывающемся случае. Выходным периодом кадра является все еще Tsi* (Mo-L), но теперь с L < 0. Только Mo новейшие входные параметры включен в буферы вывода. Предыдущие входные параметры L отбрасываются.

В следующем примере сигнале с четырьмя каналами с длиной кадра 1 и демонстрационный период 1 буферизуются к сигналу с форматом кадра 3 и период кадра 2. Из-за буферного перекрытия не сохраняется входной демонстрационный период, и выходной демонстрационный период является 2/3:

  1. В подсказке команды MATLAB введите ex_buffer_tut3.

    Модель Buffer Example T3 открывается.

    Кроме того, переменная sp_examples_src загружается в рабочее пространство MATLAB. Эта переменная задана можно следующим образом:

    sp_examples_src=[1 1 5 -1; 2 1 5 -2; 3 0 5 -3; 4 0 5 -4; 5 1 5 -5; 6 1 5 -6];
  2. Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.

  3. Установите параметры блоков можно следующим образом:

    • Signal = sp_examples_src

    • Sample time = 1

    • Samples per frame = 1

    • Form output after final data value by = Setting to zero

    На основе этих параметров блок Signal from Workspace выводит сигнал с демонстрационным периодом 1 секунды. Поскольку вы устанавливаете установку параметра Samples per frame на 1, блок Signal From Workspace выводит одну выборку с четырьмя каналами в каждом шаге расчета.

  4. Сохраните эти параметры и закройте диалоговое окно путем нажатия на OK.

  5. Дважды кликните блок Buffer. Диалоговое окно Function Block Parameters: Buffer открывается.

  6. Установите параметры блоков можно следующим образом, и затем нажмите OK:

    • Output buffer size (per channel) = 3

    • Buffer overlap = 1

    • Initial conditions = 0

    Поскольку вы устанавливаете параметр Output buffer size на 3, блок Buffer выводит сигнал с форматом кадра 3. Кроме того, потому что вы устанавливаете параметр Buffer overlap на 1, последняя выборка от предыдущего выходного кадра является первой выборкой в следующем выходном кадре.

  7. Запустите модель.

    Следующая фигура является графической интерпретацией поведения модели во время симуляции.

  8. В подсказке команды MATLAB введите sp_examples_yout.

    Следующее отображено в Окне Команды MATLAB.

    sp_examples_yout =
    
         0     0     0     0
         0     0     0     0
         0     0     0     0
         0     0     0     0
         1     1     5    -1
         2     1     5    -2
         2     1     5    -2
         3     0     5    -3
         4     0     5    -4
         4     0     5    -4
         5     1     5    -5
         6     1     5    -6
         6     1     5    -6
         0     0     0     0
         0     0     0     0
         0     0     0     0
         0     0     0     0
         0     0     0     0
    

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

Смотрите Избыточную Алгоритмическую Задержку (Определяющий задачу для Задержки) для получения общей информации об алгоритмической задержке. Для получения инструкций по тому, как вычислить задержку буферизации, смотрите Задержку буфера и Начальные условия.

Буферные входные параметры кадра в другие входные параметры кадра

В следующем примере двухканальный сигнал с форматом кадра 4 повторно буферизуется к сигналу с форматом кадра 3 и период кадра 2. Из-за перекрытия не сохраняется входной демонстрационный период, и выходной демонстрационный период является 2/3:

  1. В подсказке команды MATLAB введите ex_buffer_tut4.

    Модель Buffer Example T4 открывается.

    Кроме того, переменная sp_examples_src загружается в рабочее пространство MATLAB. Эта переменная задана как

    sp_examples_src = [1 1; 2 1; 3 0; 4 0; 5 1; 6 1; 7 0; 8 0]
  2. Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.

  3. Установите параметры блоков можно следующим образом:

    • Signal = sp_examples_src

    • Sample time = 1

    • Samples per frame = 4

    На основе этих параметров блок Signal From Workspace выводит двухканальный сигнал кадра с демонстрационным периодом второго 1 и формат кадра 4.

  4. Сохраните эти параметры и закройте диалоговое окно путем нажатия на OK.

  5. Дважды кликните блок Buffer. Диалоговое окно Function Block Parameters: Buffer открывается.

  6. Установите параметры блоков можно следующим образом, и затем нажмите OK:

    • Output buffer size (per channel) = 3

    • Buffer overlap = 1

    • Initial conditions = 0

    На основе этих параметров блок Buffer выводит двухканальный сигнал кадра с форматом кадра 3.

  7. Запустите модель.

    Следующая фигура является графическим представлением поведения модели во время симуляции.

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

Смотрите Избыточную Алгоритмическую Задержку (Определяющий задачу для Задержки) для получения общей информации об алгоритмической задержке. Для получения инструкций по тому, как вычислить задержку буферизации и видеть Задержку буфера и Начальные условия.

Задержка буфера и начальные условия

В Буферных Сигналах в качестве примера в Кадры с Перекрытием и Буферными Входными параметрами Кадра в Другие Входные параметры Кадра, входной сигнал задерживается определенным числом выборок. Начальные выходные выборки соответствуют значению, заданному для параметра Initial condition. Начальное условие является нулем в обоих упомянутых выше примерах.

При большинстве условий, Буфере и Освобождают буфер, блоки имеют некоторую сумму задержки или задержки. Эта задержка зависит и от настроек параметров блоков и от режима управления задачами Simulink®. Можно использовать функцию rebuffer_delay, чтобы определить длину задержки блока для любой комбинации формата кадра и перекрытия.

Синтаксис rebuffer_delay(f,n,v) возвращает задержку, в выборках, введенных буферизацией и освобождающими буфер блоками во время многозадачных операций, где f является входным форматом кадра, n , является установкой параметра Output buffer size, и v является установкой параметра Buffer overlap.

Например, можно вычислить задержку модели, обсужденной в Буферных Входных параметрах Кадра в Другие Входные параметры Кадра с помощью следующей команды в командной строке MATLAB:

d = rebuffer_delay(4,3,1)
d = 8

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

Для получения дополнительной информации о задержке, смотрите Избыточную Алгоритмическую Задержку (Определяющий задачу для Задержки). Дополнительные сведения об определенном блоке см. в разделе “Latency” страницы с описанием блока. Для получения дополнительной информации о функции rebuffer_delay, смотрите rebuffer_delay.

Освободите буфер сигналы кадра в демонстрационные сигналы

Можно освободить буфер многоканальные сигналы длины кадра, больше, чем 1 в многоканальные сигналы длины кадра, равной 1 с помощью блока Unbuffer. Блок Unbuffer выполняет обратную операцию процесса буферизации блока Buffer, где сигналы с длиной кадра 1 буферизуются в сигнал с длиной кадра, больше, чем 1. Блок Unbuffer генерирует N-канал вывод, содержащий одну выборку на кадр от входа N-канала, содержащего несколько каналов на кадр. Первой строкой в каждой входной матрице всегда является первый вывод.

Следующая фигура является графическим представлением этого процесса.

Демонстрационный период вывода, Tso, связан с входным периодом кадра, Tfi, входным форматом кадра, Mi.

Tso=Tfi/Mi

Блок Unbuffer всегда сохраняет демонстрационный период сигнала (Tso = Tsi). Смотрите Преобразовывают Частоты дискретизации и Частоту кадров в Simulink для получения дополнительной информации о преобразованиях уровня.

В следующем примере двухканальный сигнал с четырьмя выборками на кадр освобожден буфер в двухканальный сигнал с одной выборкой на кадр:

  1. В подсказке команды MATLAB введите ex_unbuffer_tut.

    Модель Unbuffer Example открывается.

  2. Дважды кликните блок Signal From Workspace. Диалоговое окно Source Block Parameters: Signal From Workspace открывается.

  3. Установите параметры блоков можно следующим образом:

    • Signal = [1:10;-1:-1:-10]'

    • Sample time = 1

    • Samples per frame = 4

    • Form output after final data value by = Setting to zero

    На основе этих параметров блок Signal From Workspace выводит двухканальный сигнал с форматом кадра 4.

  4. Сохраните эти параметры и закройте диалоговое окно путем нажатия на OK.

  5. Дважды кликните блок Unbuffer. Диалоговое окно Function Block Parameters: Unbuffer открывается.

  6. Установите параметр Initial conditions на 0, и затем нажмите OK.

    Блок Unbuffer освобождает буфер двухканальный сигнал с четырьмя выборками на кадр в двухканальный сигнал с одной выборкой на кадр.

  7. Запустите модель.

    Следующие фигуры являются графическим представлением того, что происходит во время симуляции модели.

    Примечание

    Блок Unbuffer генерирует начальные условия, не показанные в фигуре ниже со значением, заданным параметром Initial conditions. Смотрите Освобождать буфер страницу с описанием для получения информации о количестве начальных условий, которые появляются в выводе.

  8. В подсказке команды MATLAB введите sp_examples_yout.

    Следующее является фрагментом вывода.

    sp_examples_yout(:,:,1) =
    
         0     0
    
    
    sp_examples_yout(:,:,2) =
    
         0     0
    
    
    sp_examples_yout(:,:,3) =
    
         0     0
    
    
    sp_examples_yout(:,:,4) =
    
         0     0
    
    
    sp_examples_yout(:,:,5) =
    
         1    -1
    
    
    sp_examples_yout(:,:,6) =
    
         2    -2
    
    
    sp_examples_yout(:,:,7) =
    
         3    -3
    

    Блок Unbuffer освобождает буфер сигнал в двухканальный сигнал. Каждая страница выходной матрицы представляет различный шаг расчета.

Похожие темы