Документация Engee

EngeeDSP.Channelizer

Набор полифазных фильтров для анализа БПФ.

Библиотека

EngeeDSP

Описание

Системный объект EngeeDSP.Channelizer разделяет широкополосный входной сигнал на несколько узких субполос, используя набор фильтров на основе быстрого преобразования Фурье (БПФ). Набор фильтров использует прототип фильтра нижних частот и реализован с помощью полифазной структуры. Коэффициенты фильтра можно задать напрямую или через параметры проектирования.

Чтобы разделить широкополосный сигнал на несколько узких субполос, выполните следующие действия:

  1. Создайте объект EngeeDSP.Channelizer и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • channelizer = EngeeDSP.Channelizer() — создает системный объект набора полифазных фильтров для анализа БПФ, который разделяет широкополосный входной сигнал на несколько узкополосных выходных сигналов. Этот объект реализует обратную операцию по отношению к системному объекту EngeeDSP.ChannelSynthesizer.

  • channelizer = EngeeDSP.Channelizer(M) — создает набор полифазных фильтров для анализа БПФ в -диапазоне, у которого для свойства NumFrequencyBands установлено значение .

    Пример:

    channelizer = EngeeDSP.Channelizer(16)
  • channelizer = EngeeDSP.Channelizer(M,D) — создает набор полифазных фильтров для анализа БПФ в -диапазоне, у которого для свойства DecimationFactor установлено значение .

    Пример:

    channelizer = EngeeDSP.Channelizer(16, 8)
  • channelizer = EngeeDSP.Channelizer(Name=Value) — создает системный объект набора полифазных фильтров для анализа БПФ с заданными свойствами в виде пары Name=Value, где Name — имя свойства, а Value — соответствующее значение. Можно указать несколько пар «имя-значение», порядок пар не имеет значения. Неуказанные свойства сохраняют свои значения по умолчанию.

    Пример:

    # создание системного объекта с коэффициентом децимации 4
    channelizer = EngeeDSP.Channelizer(DecimationFactor = 4)

Использование

  • channOut = channelizer(input) — разделяет широкополосный входной сигнал на ряд узкополосных сигналов, содержащихся в столбцах выходного сигнала канального преобразователя.

Аргументы

Входные аргументы

# input — входные данные
вектор | матрица

Details

Входные данные, заданные как вектор длины или как матрица размером на , где .

В большинстве случаев количество строк входных данных может быть произвольным и не обязательно должно быть кратным количеству частотных полос. Подробности см. в этой таблице.

Входной сигнал При запуске объекта в Engee При генерации кода

Фиксированного размера

Объект поддерживает произвольную длину входного кадра

Объект поддерживает произвольную длину входного кадра, если при генерации кода для свойства AllowArbitraryInputLength установить значение true

Переменного размера

Объект поддерживает произвольную длину входного кадра

Объект поддерживает произвольную длину входного кадра

Сигналы переменного размера изменяют длину кадра после блокировки объекта, в то время как сигналы фиксированного размера остаются постоянными. Если объект не поддерживает произвольную длину кадра, длина входного кадра должна быть кратна количеству частотных полос.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

Выходные аргументы

# channOut — выходной сигнал канального преобразователя
матрица | трехмерный массив

Details

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

Если входной сигнал представляет собой вектор длины , то размер выходного сигнала ограничен значением на , где — количество частотных полос. Каждый узкополосный сигнал образует столбец на выходе.

Если входной сигнал имеет более одного канала, то есть имеет размер на , где , то размер выходного сигнала ограничен значением на на .

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

Свойства

# LowpassCoefficients — коэффициенты прототипа фильтра нижних частот

Details

Коэффициенты прототипа фильтра нижних частот, заданные как вектор-строка. Вектор коэффициентов по умолчанию получается с помощью функции rcosdesign(0.25, 6, 8, "sqrt"). Для каждой полосы частот должен быть как минимум один коэффициент. Если длина фильтра нижних частот меньше количества полос частот, объект дополняет коэффициенты нулями.

Если задать комплексные коэффициенты, объект разработает прототип фильтра, центрированный на ненулевой частоте, также известный как полосовой фильтр. Модулированные версии прототипа полосового фильтра отображаются относительно прототипа фильтра и охватывают частотный диапазон .

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Coefficients".

# AllowArbitraryInputLength — разрешить произвольную длину входного кадра в сгенерированном коде
Логический тип

Details

Разрешить произвольную длину кадра для входных сигналов фиксированного размера в сгенерированном коде, указав значение true или false.

При указании:

  • true — длина входного кадра не обязательно должна быть кратна коэффициенту децимации. Выход объекта в сгенерированном коде представляет собой массив переменного размера.

  • false — длина входного кадра должна быть кратна коэффициенту децимации.

При указании сигналов переменного размера длина входного кадра может быть произвольной, и объект игнорирует это свойство в сгенерированном коде. При запуске этого объекта в Engee объект поддерживает произвольную длину входного кадра для сигналов фиксированного и переменного размера, и это свойство не влияет на поведение объекта.

# DecimationFactor — коэффициент децимации

Details

Коэффициент децимации , заданный одним из следующих значений:

  • "Number of frequency bands" — при изменении значения свойства NumFrequencyBands коэффициент децимации изменяется автоматически.

  • Положительное целое число, меньшее или равное количеству частотных полос .

Если коэффициент децимации равен количеству частотных полос , то отношение равно 1, и канальный преобразователь называется канальным преобразователем с максимальной децимацией.

Если отношение больше 1, частота дискретизации выходного сигнала отличается от шага каналов, и канальный преобразователь называется канальным преобразователем без максимальной децимации. Если отношение является целым числом, канальный преобразователь называется канальным преобразователем с целочисленной передискретизацией. Если отношение не является целым числом, например 4/3, канальный преобразователь называется канальным преобразователем с рациональной передискретизацией. Для получения более подробной информации см. в разделе Алгоритмы.

# NumFrequencyBands — количество частотных полос
Вещественное число

Details

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

# NumTapsPerBand — количество коэффициентов фильтра на частотную полосу
Вещественное число

Details

Количество коэффициентов фильтра, используемых каждой полифазной ветвью, заданное как положительное целое число. Количество полифазных ветвей соответствует количеству частотных полос. Общее количество коэффициентов фильтра для прототипа фильтра нижних частот определяется как NumFrequencyBands NumTapsPerBand. При заданном затухании в полосе задерживания увеличение количества отводов на полосу сужает ширину перехода фильтра. В результате увеличивается полезная полоса пропускания для каждой частотной полосы за счет увеличения вычислительных затрат.

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Number of taps per band and stopband attenuation".

# Specification — параметры проектирования или коэффициенты фильтра
Строка

Details

Параметры проектирования фильтра или коэффициенты фильтра, заданные одним из следующих способов:

  • "Number of taps per band and stopband attenuation" — параметры проектирования фильтра задаются с помощью свойств NumTapsPerBand и StopbandAttenuation.

  • "Coefficients" — коэффициенты фильтра задаются непосредственно с помощью свойства LowpassCoefficients.

# StopbandAttenuation — затухание в полосе задерживания
Вещественное число

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства Specification значение "Number of taps per band and stopband attenuation".

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Дополнительно

Набор фильтров для анализа

Details

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

channelizer 1 ru

Прототип фильтра нижних частот

Details

Для эффективной реализации набора фильтров для анализа канальный преобразователь использует прототип фильтра нижних частот.

Прототип фильтра нижних частот имеет импульсную характеристику , нормированную двустороннюю полосу пропускания и частоту среза . — количество частотных полос, то есть ветвей набора фильтров для анализа. Это значение соответствует длине БПФ, используемой набором фильтров. может быть большим, порядка 2048 или более. Затухание в полосе задерживания определяет минимальный уровень помех (искажение контуров) от одной полосы частот к другой. Пульсации в полосе пропускания должны быть малыми, чтобы входной сигнал не искажался в полосе пропускания.

Прототип фильтра нижних частот соответствует в наборе фильтров. Первая ветвь набора фильтров содержит , за которым следует прореживатель (дециматор). Остальные ветви содержат фильтры, которые являются модулированными версиями прототипа фильтра. Коэффициент модуляции определяется следующим уравнением:

Использование прототипа фильтра нижних частот

Details

Передаточная функция модулированного -го полосового фильтра задается формулой

На этом рисунке показана частотная характеристика фильтров.

channelizer 2

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

Ниже приведено эквивалентное представление диаграммы частотной характеристики с , изменяющимся в диапазоне .

channelizer 3

Сдвиг узких субполос в основную полосу частот

Details

Частотные компоненты входного сигнала преобразуются в полосу частот путем умножения на комплексные экспоненты:

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

На рисунке показан набор фильтров для анализа, использующий прототип фильтра нижних частот.

channelizer 4 ru

— сигналы узких субполос, преобразованные в основную полосу частот.

Алгоритмы

Реализация с использованием полифазной структуры

Details

Набор фильтров для анализа может быть эффективно реализован с использованием полифазной структуры. Более подробную информацию о наборе фильтров для анализа см. в разделе Набор фильтров для анализа.

Для получения полифазной структуры начнем с передаточной функции прототипа фильтра нижних частот:

где — длина прототипа фильтра.

Это уравнение можно переформулировать следующим образом:

где — количество полифазных компонентов.

Это уравнение можно записать следующим образом:

где — полифазные компоненты прототипа фильтра нижних частот .

Остальные фильтры в наборе фильтров , где , являются модулированными версиями этого прототипа фильтра.

Передаточную функцию -го модулированного полосового фильтра можно записать как .

Заменив на и ,

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

Для всех каналов в наборе фильтров передаточная функция задается следующим образом:

Канальный преобразователь с максимальной децимацией

Details

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

Здесь приведено многоскоростное замечательное тождество для уменьшения частоты (децимации), предполагающее, что .

channelizer 5 ru

Например, рассмотрим первую ветвь набора фильтров, содержащую фильтр нижних частот.

channelizer 6

channelizer 7

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

channelizer 8 ru

Для всех каналов в наборе фильтров передаточная функция задается следующим образом:

Матрица слева — это матрица обратного дискретного преобразования Фурье (ОДПФ). С помощью матрицы ОДПФ эффективная реализация набора фильтров на основе прототипа низкочастотного фильтра выглядит следующим образом.

channelizer 9 ru

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

Если использовать -точечное БПФ, реализация будет выглядеть следующим образом.

channelizer 10 ru

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

Канальный преобразователь без максимальной децимации или канальный преобразователь с передискретизацией

Details

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

Если отношение равно целому числу, большему 1 и меньшему или равному , канальный преобразователь называется канальным преобразователем с целочисленной передискретизацией. Если отношение не является целым числом, то канальный преобразователь называется канальным преобразователем с рациональной передискретизацией.

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

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

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

Более подробную информацию см. в [2].

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

С коммутатором, за которым следует -ступенчатый полифазный фильтр, буфер циклического сдвига и матрица ДПФ, эффективная реализация набора фильтров на основе прототипа низкочастотного фильтра выглядит следующим образом.

channelizer 11 ru

Литература

  1. Harris, Fredric J, Multirate Signal Processing for Communication Systems, Prentice Hall PTR, 2004.

  2. Harris, F.J., Chris Dick, and Michael Rice. «Digital Receivers and Transmitters Using Polyphase Filter Banks for Wireless Communications.» IEEE® Transactions on Microwave Theory and Techniques. 51, no. 4 (2003).