dsp.Channelizer

Полифазный блок фильтров БПФ анализа

Описание

The dsp.Channelizer Система object™ разделяет широкополосный входной сигнал на несколько узких поддиапазонов с помощью банка фильтров на основе быстрого преобразования Фурье (FFT). Банк фильтров использует прототип lowpass фильтра и реализован с помощью структуры полифазы. Можно задать коэффициенты фильтра непосредственно или через расчётные параметры.

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

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

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

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

Создание

Описание

пример

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

пример

channelizer = dsp.Channelizer(M) создает M-диапазонный полифазный банк фильтров анализа БПФ с установленным на M свойством NumFrequencyBands .

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

пример

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

Пример: channelizer = dsp. Channelizer ('NumTapsPerBand', 20, 'StopbandAttenuation', 140);

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

Пример: 16

Пример: 64

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

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

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

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

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

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

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

Пример: 8

Пример: 16

Зависимости

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

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

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

Пример: 80

Зависимости

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

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

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

Если вы задаете комплексные коэффициенты, объект проектирует фильтр прототипа, который центрируется на ненулевой частоте, также известной как полосно-пропускающий фильтр. Модулированные версии полосно-пропускающего фильтра прототипа появляются относительно фильтра прототипа и обернуты вокруг частотной области значений [− F s F s]. Для получения примера смотрите Channelizer with Complex Coefficients.

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

Зависимости

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

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

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

Описание

пример

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

Входные параметры

расширить все

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

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

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

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

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

расширить все

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

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

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

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

release(obj)

расширить все

coeffsКоэффициенты lowpass прототипа
tfОбратная передаточная функция общего прототипа lowpass фильтра
polyphaseВозвращает полифазную матрицу
freqzЧастотная характеристика фильтров в канализаторе
fvtoolВизуализируйте фильтры в канализаторе
bandedgeFrequenciesВычислите полосы пропускания
centerFrequenciesВычисление центральных частот
getFiltersВозвращает матрицу каналообразующих конечных импульсных характеристик фильтров
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

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

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

Инициализируйте 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');

Вытекание

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

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] Harris, Fredic J, Multirate Signal Processing for Communication Systems, Prentice Hall PTR, 2004.

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

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

.
Введенный в R2016b