dsp.Channelizer

Многофазный аналитический набор фильтров БПФ

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

Описание

пример

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

пример

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

Пример: channelizer = dsp.Channelizer (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, заданный как положительное целое число, меньше чем или равное количеству диапазонов частот M. Значение по умолчанию этого свойства равняется количеству заданных диапазонов частот.

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

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

Типы данных: 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 меньше количества диапазонов частот, объектные нулевые клавиатуры коэффициенты.

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

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

Зависимости

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

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

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

Описание

пример

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

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

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

Ввод данных в виде вектора или матрицы. Количество строк во входном сигнале должно быть кратным количеству диапазонов частот набора фильтров. Каждый столбец входа соответствует отдельному каналу. Если 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Частотная характеристика просачивается channelizer
fvtoolВизуализируйте фильтры в channelizer
bandedgeFrequenciesВычислите bandedge частоты
centerFrequenciesВычислите центральные частоты
getFiltersВозвратите матрицу channelizer КИХ-фильтров
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, определите коэффициенты Парка-McClellan's оптимальный equiripple КИХ-фильтр порядка 30, и частота и амплитудные характеристики, описанные F = [0 0.2 0.4 1.0] и = [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");

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

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

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

Визуализируйте частотную характеристику channelizer.

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] Харрис, Фредерик Дж, многоскоростная обработка сигналов для систем связи, PTR Prentice Hall, 2004.

[2] Харрис, F.J., Крис Дик и Майкл Райс. "Цифровые Приемники и Передатчики Используя Многофазные Наборы фильтров для Радиосвязей". IEEE® Transactions на Микроволновой Теории и Методах. 51, № 4 (2003).

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

Введенный в R2017b