exponenta event banner

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

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

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

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

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

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

    Откроется модель Пример буфера (Buffer Example).

  2. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

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

    • Сигнал = [1:10;-1:-1:-10]'

    • Время выборки = 1

    • Выборки на кадр = 1

    • Вывод формы после конечного значения данных = Setting to zero

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

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

  5. Дважды щелкните на блоке «Буфер». Откроется диалоговое окно Параметры функционального блока: Буфер (Function Block Parameters: Buffer).

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

    • Размер выходного буфера (на канал) = 4

    • Перекрытие буфера = 0

    • Начальные условия = 0

    Поскольку для параметра Размер выходного буфера установлено значение 4блок буфера выводит сигнал кадра с размером кадра 4.

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

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

Примечание

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

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

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

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

Примечание

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

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

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

    Откроется модель 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. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

  3. Задайте параметры блока следующим образом:

    • Сигнал = sp_examples_src

    • Время выборки = 1

    • Выборки на кадр = 1

    • Вывод формы после конечного значения данных на = Setting to zero

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

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

  5. Дважды щелкните на блоке «Буфер». Откроется диалоговое окно Параметры функционального блока: Буфер (Function Block Parameters: Buffer).

  6. Задайте параметры блока следующим образом и нажмите кнопку ОК:

    • Размер выходного буфера (на канал) = 3

    • Перекрытие буфера = 1

    • Начальные условия = 0

    Поскольку для параметра Размер выходного буфера установлено значение 3блок буфера выводит сигнал с размером кадра 3. Кроме того, поскольку для параметра «Перекрытие буфера» задано значение 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.

    Откроется модель 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. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

  3. Задайте параметры блока следующим образом:

    • Сигнал = sp_examples_src

    • Время выборки = 1

    • Выборки на кадр = 4

    На основе этих параметров блок «Сигнал из рабочего пространства» выводит двухканальный сигнал кадра с периодом выборки 1 второй и размер кадра 4.

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

  5. Дважды щелкните на блоке «Буфер». Откроется диалоговое окно Параметры функционального блока: Буфер (Function Block Parameters: Buffer).

  6. Задайте параметры блока следующим образом и нажмите кнопку ОК:

    • Размер выходного буфера (на канал) = 3

    • Перекрытие буфера = 1

    • Начальные условия = 0

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

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

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

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

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

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

В примерах буферизация сигналов в кадры с перекрытием и буферизация входов кадров в другие входы кадров входной сигнал задерживается на определенное количество выборок. Исходные выходные выборки соответствуют значению, указанному для параметра Initial condition. Исходное условие равно нулю в обоих примерах, упомянутых выше.

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

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

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

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

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

Дополнительные сведения о задержке см. в разделе Избыточная алгоритмическая задержка (задержка задания). Для получения информации о задержке конкретного блока см. раздел «Задержка» на странице ссылок на блок. Для получения дополнительной информации о rebuffer_delay функция, см. rebuffer_delay.

Сигналы кадров Unbuffer в выборочные сигналы

Можно отменить буферизацию многоканальных сигналов с длиной кадра, превышающей 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. Дважды щелкните на блоке «Сигнал из рабочего пространства». Откроется диалоговое окно Параметры блока источника: Сигнал из рабочего пространства (Source Block Parameters: Signal From Workspace).

  3. Задайте параметры блока следующим образом:

    • Сигнал = [1:10;-1:-1:-10]'

    • Время выборки = 1

    • Выборки на кадр = 4

    • Вывод формы после конечного значения данных на = Setting to zero

    На основе этих параметров блок «Сигнал из рабочего пространства» выдает двухканальный сигнал с размером кадра 4.

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

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

  6. Установите для параметра Initial conditions значение 0и нажмите кнопку «ОК».

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

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

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

    Примечание

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

  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 распаковывает сигнал в двухканальный сигнал. Каждая страница выходной матрицы представляет различное время выборки.

Связанные темы