exponenta event banner

dsp. Channelizer

Набор фильтров многофазного анализа БПФ

Описание

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

Для разделения широкополосного сигнала на несколько узких поддиапазонов:

  1. Создать dsp.Channelizer и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

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

пример

channelizer = dsp.Channelizer(M) создает набор фильтров многофазного FFT-анализа M-диапазона, свойство NumFrequencyBands которого имеет значение M.

Пример: каналообразователь = dsp. Каналообразователь (16);

пример

channelizer = dsp.Channelizer(Name,Value) создает многофазный набор фильтров анализа БПФ с заданным значением каждого свойства. Заключите каждое имя свойства в отдельные кавычки.

Пример: каналообразователь = dsp. Каннелизатор ('NumTapsPerBand', 20, 'StopbandAttenuation', 140);

Свойства

развернуть все

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

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

Пример: 16

Пример: 64

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

  • 'Number of taps per band and stopband attenuation' - Укажите расчетные параметры фильтра через NumTapsPerBand и свойства затухания полосы останова (дБ).

  • 'Coefficients' - укажите коэффициенты фильтра непосредственно с помощью свойства LowpassCoefficients.

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

Пример: 8

Пример: 16

Зависимости

Это свойство применяется при установке Specification кому 'Number of taps per band and stopband attenuation'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Пример: 80

Зависимости

Это свойство применяется при установке Specification кому 'Number of taps per band and stopband attenuation'.

Типы данных: single | double

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

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

Настраиваемый: Да

Зависимости

Это свойство применяется при установке Specification кому 'Coefficients'.

Типы данных: single | double
Поддержка комплексного номера: Да

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

Описание

пример

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

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

развернуть все

Ввод данных, заданный как вектор или матрица. Число строк во входном сигнале должно быть кратным числу полос частот набора фильтров. Каждый столбец входа соответствует отдельному каналу. Если М - число полос частот, а вход - L-by-1 матрица, то выходной сигнал имеет размеры L/M-by-M. Каждый узкополосный сигнал формирует столбец на выходе. Если вход имеет более одного канала, то есть имеет размеры L-by-N с N > 1, то выход имеет размеры L/M-by-M-by-N.

Этот объект поддерживает входные сигналы переменного размера. Размер входного кадра (количество строк) можно изменить даже после вызова алгоритма. Однако количество каналов (количество столбцов) должно оставаться постоянным.

Пример: randn (64,4)

Типы данных: single | double
Поддержка комплексного номера: Да

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

развернуть все

Выходной сигнал каналообразователя, возвращаемый в виде матрицы или массива 3-D. Если вход является L-by-1 матрицей, то выходной сигнал имеет размеры L/M-by-M, где M - количество полос частот. Каждый узкополосный сигнал формирует столбец на выходе. Если вход имеет более одного канала, то есть имеет размеры L-by-N с N > 1, то выход имеет размеры L/M-by-M-by-N.

Типы данных: single | double
Поддержка комплексного номера: Да

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

coeffsКоэффициенты прототипа фильтра нижних частот
tfФункция обратного переноса всего прототипа фильтра нижних частот
polyphaseВозвращаемая многофазная матрица
freqzЧастотная характеристика фильтров в каналообразователе
fvtoolВизуализация фильтров в каналообразователе
bandedgeFrequenciesВычисление частот полосы пропускания
centerFrequenciesВычислить центральные частоты
getFiltersМатрица возврата КИХ-фильтров каналообразователя
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

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

Инициализация

Инициализируйте dsp.Channelizer и dsp.ChannelSynthesizer Системные объекты. Каждый объект настроен с 8 полосами частот, 8 многофазными ветвями в каждом фильтре, 12 коэффициентами на многофазную ветвь и затуханием стоп-полосы 140 дБ. В качестве входного сигнала используйте синусоидальную волну с несколькими частотами. Просмотрите входной спектр и выходной спектр с помощью анализатора спектра.

offsets = [-40,-30,-20,10,15,25,35,-15];
sinewave = dsp.SineWave('ComplexOutput',true,'Frequency',...
    offsets+(-375:125:500),'SamplesPerFrame',800);

channelizer = dsp.Channelizer('StopbandAttenuation',140);
synthesizer = dsp.ChannelSynthesizer('StopbandAttenuation',140);
spectrumAnalyzer =  dsp.SpectrumAnalyzer('ShowLegend',true,'NumInputPorts',...
    2,'ChannelNames',{'Input','Output'},'Title','Input and Output of QMF');

Вытекание

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

for i = 1:5000
    x = sum(sinewave(),2);
    y = channelizer(x);
    v = synthesizer(y);
    spectrumAnalyzer(x,v)
end

Создать dsp.Channelizer и установите LowpassCoefficients свойство вектору комплексных коэффициентов.

Комплексные коэффициенты

Используя firpmопределяют коэффициенты оптимального эквриппельного КИХ-фильтра Пак-Макклеллана порядка 30 и частотно-амплитудные характеристики, описанные векторами F = [0 0,2 0,4 1,0] и A = [1 1 0 0] соответственно.

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

blowpass = firpm(30,[0 .2 .4 1],[1 1 0 0]);
N = length(blowpass)-1;
Fc = 0.4;
j = complex(0,1);
bbandpass = blowpass.*exp(j*Fc*pi*(0:N));

Channelizer

Создать dsp.Channelizer объект с 4 полосами частот и установите Specification свойство для 'Coefficients'.

chann = dsp.Channelizer('NumFrequencyBands',4,'Specification',"Coefficients");

Передайте комплексные коэффициенты каналообразователю. Фильтр-прототип представляет собой полосовой фильтр с центральной частотой 0,4. Модулированные версии этого фильтра появляются по отношению к фильтру-прототипу и оборачиваются вокруг частотного диапазона [-Fs Fs].

chann.LowpassCoefficients = bbandpass
chann = 
  dsp.Channelizer with properties:

      NumFrequencyBands: 4
       DecimationFactor: 4
          Specification: 'Coefficients'
    LowpassCoefficients: [1x31 double]

Визуализация частотной характеристики каналообразователя.

fvtool(chann)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 4 objects of type line.

Подробнее

развернуть все

Алгоритмы

развернуть все

Ссылки

[1] Харрис, Фредрик Джей, многоскоростная обработка сигналов для систем связи, Prentice Hall PTR, 2004.

[2] Харрис, Ф.Дж., Крис Дик и Майкл Райс. «Цифровые приемники и передатчики, использующие банки многофазных фильтров для беспроводной связи». Транзакции IEEE ® по теории и методам микроволнового излучения. 51, № 4 (2003).

Расширенные возможности

.
Представлен в R2016b