Многофазный аналитический набор фильтров БПФ
dsp.Channelizer
Система object™ разделяет широкополосный входной сигнал на несколько узких поддиапазонов с помощью быстрого преобразования Фурье (FFT) - базирующийся аналитический набор фильтров. Набор фильтров использует прототип фильтр lowpass и реализован с помощью многофазной структуры. Можно задать коэффициенты фильтра непосредственно или через расчетные параметры.
Разделять широкополосный сигнал на несколько узких поддиапазонов:
Создайте dsp.Channelizer
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?
создает многофазный аналитический Системный объект набора фильтров БПФ, который разделяет широкополосный входной сигнал на несколько узкополосных выходных сигналов. Этот объект реализует обратную операцию channelizer
= dsp.Channelizerdsp.ChannelSynthesizer
Системный объект.
создает M - полоса многофазный аналитический набор фильтров БПФ, с набором свойств NumFrequencyBands к M. channelizer
= dsp.Channelizer(M)
создает многофазный аналитический набор фильтров БПФ с каждым заданным набором свойств к заданному значению. Заключите каждое имя свойства в одинарные кавычки.channelizer
= dsp.Channelizer(Name,Value
)
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
NumFrequencyBands
— Количество диапазонов частот
(значение по умолчанию) | положительное целое число, больше, чем 1Количество диапазонов частот M, в который объект разделяет входной широкополосный сигнал в виде положительного целого числа, больше, чем 1. Это свойство соответствует количеству многофазных ветвей и длины БПФ, используемой в наборе фильтров.
Пример: 16
Пример: 64
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
DecimationFactor
— Фактор децимации
(значение по умолчанию) | положительное целое числоФактор децимации 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
Specification
— Параметры создания фильтра или коэффициенты'Number of taps per band and stopband attenuation'
(значение по умолчанию) | 'Coefficients'
Параметры создания фильтра или коэффициенты фильтра в виде одной из этих опций:
'Number of taps per band and stopband attenuation'
— Задайте параметры создания фильтра через NumTapsPerBand
и Затухание в полосе задерживания (дБ) свойства.
'Coefficients'
— Задайте коэффициенты фильтра непосредственно с помощью свойства LowpassCoefficients.
NumTapsPerBand
— Количество коэффициентов фильтра на диапазон частот
(значение по умолчанию) | положительное целое числоКоличество коэффициентов фильтра каждая многофазная ветвь использует в виде положительного целого числа. Количество многофазных ветвей совпадает с количеством диапазонов частот. Общее количество коэффициентов фильтра для прототипа фильтр lowpass дано NumFrequencyBands
× NumTapsPerBand
. Для данного затухания в полосе задерживания, увеличивая число касаний на полосу сужает ширину перехода фильтра. В результате существует больше применимой полосы пропускания для каждого диапазона частот за счет увеличенного расчета.
Пример 8
Пример: 16
Это свойство применяется, когда вы устанавливаете Specification
к 'Number of taps per band and stopband attenuation'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandAttenuation
— Затухание в полосе задерживания
(значение по умолчанию) | положительный действительный скалярЗатухание в полосе задерживания lowpass фильтрует в виде положительного действительного скаляра в дБ. Это значение управляет максимальным объемом искажения от одного диапазона частот до следующего. Когда затухание в полосе задерживания увеличивается, уменьшения неравномерности в полосе пропускания. Для данного затухания в полосе задерживания, увеличивая число касаний на полосу сужает ширину перехода фильтра. В результате существует больше применимой полосы пропускания для каждого диапазона частот за счет увеличенного расчета.
Пример: 80
Это свойство применяется, когда вы устанавливаете Specification
к 'Number of taps per band and stopband attenuation'
.
Типы данных: single
| double
LowpassCoefficients
— Коэффициенты прототипа фильтр lowpass[1×49 double]
(значение по умолчанию) | вектор-строкаКоэффициенты прототипа фильтр lowpass в виде вектора-строки. Вектор по умолчанию из коэффициентов получен с помощью rcosdesign(0.25,6,8,'sqrt')
. Должен быть по крайней мере один коэффициент на диапазон частот. Если длина фильтра lowpass меньше количества диапазонов частот, объектные нулевые клавиатуры коэффициенты.
Если вы задаете комплексные коэффициенты, объект проектирует прототипный фильтр, который сосредоточен на ненулевой частоте, также известной как полосовой фильтр. Модулируемые версии прототипного полосового фильтра появляются относительно прототипа, фильтруют и перенесены вокруг частотного диапазона [−Fs F s]. Для примера смотрите Channelizer с Комплексными Коэффициентами.
Настраиваемый: да
Это свойство применяется, когда вы устанавливаете Specification
к 'Coefficients'
.
Типы данных: single
| double
Поддержка комплексного числа: Да
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
Поддержка комплексного числа: Да
channOut
— Channelizer выход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 КИХ-фильтров |
Канализируйте и синтезируйте синусоидальный сигнал с несколькими частотами с помощью M - набор фильтров канала.
M - набор фильтров канала содержит аналитический раздел набора фильтров и раздел набора фильтров синтеза. 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,... 'SampleRate',sinewave.SampleRate,... 'NumInputPorts',2,'ChannelNames',{'Input','Output'},... 'Title','Input and Output Spectra');
Потоковая передача
Используйте 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: [0.0019 + 0.0000i 0.0005 + 0.0016i ... ]
Визуализируйте частотную характеристику channelizer.
fvtool(chann)
Типовой аналитический набор фильтров состоит из серии параллельных полосовых фильтров, которые разделяют входной широкополосный сигнал, x [n], в серию узких поддиапазонов. Каждый полосовой фильтр сохраняет различный фрагмент входного сигнала. После того, как полоса пропускания уменьшается одним из полосовых фильтров, сигнал прорежен к более низкой частоте дискретизации, соразмерной с новой полосой пропускания.
Чтобы реализовать аналитический набор фильтров эффективно, channelizer использует прототип фильтр lowpass.
Прототип фильтр lowpass имеет импульсную характеристику h [n], нормированная двухсторонняя полоса пропускания 2π/M и частота среза π/M. M является количеством диапазонов частот, то есть, ветвей аналитического набора фильтров. Это значение соответствует длине БПФ, которую использует набор фильтров. M может быть высоким порядка 2048 или больше. Затухание в полосе задерживания определяет минимальный уровень интерференции (искажение) от одного диапазона частот до другого. Неравномерность в полосе пропускания должна быть малой так, чтобы входной сигнал не был искажен в полосе пропускания.
Прототип фильтр lowpass соответствует H0 (z) в наборе фильтров. Первая ветвь набора фильтров содержит H0 (z), сопровождаемый decimator. Другой M – 1 ветвь содержит фильтры, которые являются модулируемыми версиями прототипного фильтра. Фактор модуляции дан следующим уравнением:
Передаточной функцией модулируемого k th полосовой фильтр дают:
Этот рисунок показывает частотную характеристику фильтров M.
Получить характеристики частотной характеристики фильтра Hk (z), куда k = 1, …, M −1, однородно переключают частотную характеристику прототипного фильтра, H0 (z), множителями 2π/M. Каждый фильтр поддиапазона, Hk (z), {k = 1, …, M – 1}, выведен из прототипного фильтра.
Следующее является эквивалентным представлением схемы частотной характеристики с ω в пределах от [−π π].
Частотные составляющие во входном сигнале, x [n], переводятся в частоте в основную полосу путем умножения x [n] с комплексными экпонентами, , где , и . Получившиеся сигналы продукта передаются через фильтры lowpass, H0 (z). Выход фильтра lowpass является относительно узким в полосе пропускания. Downsample сигнал, соразмерный с новой полосой пропускания. Выберите фактор децимации, D ≤ M, где M является количеством ветвей аналитического набора фильтров. Когда D <M, channelizer известен, как сверхдискретизировано или немаксимально подкошен channelizer.
Рисунок показывает аналитический набор фильтров, который использует прототип фильтр lowpass.
y1 [m], y2 [m], …, yM−1 [m] является узкими сигналами поддиапазона, переведенными в основную полосу.
Аналитический набор фильтров может быть реализован эффективно с помощью многофазной структуры. Для получения дополнительной информации об аналитическом наборе фильтров смотрите Аналитический Набор фильтров.
Чтобы вывести многофазную структуру, начните с передаточной функции прототипа фильтр lowpass:
N + 1 является длиной прототипного фильтра.
Можно перестроить это уравнение можно следующим образом:
M является количеством многофазных компонентов.
Можно записать это уравнение как:
E0 (zM), E1 (zM), …, EM−1 (zM) многофазные компоненты прототипа фильтр lowpass H0 (z).
Другие фильтры в наборе фильтров, Hk (z), где k = 1, …, M −1, являются модулируемыми версиями этого прототипного фильтра.
Можно записать передаточную функцию kth модулируемый полосовой фильтр как .
Заменяя z на ze-jwk,
N + 1 является длиной kth фильтр.
В многофазной форме уравнение следующие:
Для всех каналов M в наборе фильтров передаточная функция H (z) дают:
Когда D = M, channelizer известен как максимально подкошенный channelizer или критически производится channelizer.
Вот многоскоростная благородная идентичность для децимации, принимая тот D = M.
Например, рассмотрите первую ветвь набора фильтров, который содержит фильтр lowpass.
Замените H0 (z) на его многофазное представление.
После применения благородной идентичности для децимации можно заменить задержки и фактор децимации с переключателем коммутатора. Переключатель запускается на первой ветви 0 и перемещается в направление против часовой стрелки как показано в следующей схеме. Аккумулятор при выходе получает обработанные входные выборки от каждой ветви многофазной структуры и накапливает эти обработанные выборки, пока переключатель не переходит к ветви 0. Когда переключатель переходит к ветви 0, аккумулятор выводит накопленное значение.
Для всех каналов M в наборе фильтров передаточная функция H (z) дают:
Матрица слева является матрицей дискретного преобразования Фурье (ДПФ). С матрицей ДПФ эффективным внедрением lowpass выглядит так основанный на прототипе набор фильтров.
Когда первая входная выборка поставляется, переключатель кормит этим входом ветвь 0, и channelizer вычисляет первый набор выходных значений. Когда более входные выборки входят, перемещения переключателя в направлении против часовой стрелки посредством ветвей M −1, M −2, полностью, чтобы перейти 0, поставляя одну выборку за один раз каждой ветви. Когда переключатель приходит к ветви 0, channelizer выходным параметрам следующий набор выходных значений. Этот процесс продолжается, когда данные удерживают прибытие. Каждый раз переключатель приходит к первой ветви 0, channelizer выходным параметрам y0 [m], y1 [m], …, yM-1 [m]. Каждая ветвь в channelizer эффективно выводит одну выборку для каждого M выборки, которые это получает. Следовательно, частотой дискретизации при выходе channelizer является fs/M.
Когда D <M, channelizer известен как немаксимально подкошенный channelizer или сверхдискретизирован channelizer. В этой настройке выходная частота дискретизации отличается от интервала канала. Немаксимально подкошенное предложение channelizers увеличило свободу проекта, но за счет увеличения вычислительной стоимости.
Если отношение, M/D равняется целому числу, которое больше 1 и меньше чем или равно M −1, channelizer, известно, как сверхдискретизировано целым числом channelizer. Если отношение, M/D не является целым числом, то channelizer известен, как рационально сверхдискретизировано channelizer.
В этой настройке, когда первая входная выборка поставляется, переключатель питает этот вход, чтобы перейти 0, и channelizer вычисляет первый набор выходных значений. Когда более входные выборки входят, перемещения переключателя в направлении против часовой стрелки посредством ветвей D −1, D −2, полностью, чтобы перейти 0, поставляя одну выборку за один раз каждой ветви. Когда переключатель приходит к ветви 0, channelizer выходным параметрам следующий набор выходных значений. Этот процесс продолжается, когда данные удерживают прибытие. Каждый раз переключатель приходит к первой ветви 0, channelizer выходным параметрам y0 [m], y1 [m], …, yM-1 [m].
Когда больше данных удерживает прибытие, и переключатель кормит этими выборками первые адреса D, формальное содержимое этих адресов смещено к следующему набору адресов D, и этот процесс сдвига данных продолжается каждый раз, когда существует новый набор выборок входа D.
Для каждого входа D выборки, которые питаются многофазную структуру, channelizer выборки выходных параметров M, y0 [m], y1 [m], …, yM-1 [m]. Этот процесс увеличивает выходную частоту дискретизации с fs/M в случае максимально подкошенного channelizer к fs/D в случае немаксимально подкошенного channelizer.
Для получения дополнительной информации см. [2].
После каждого D - последовательность данных точки поставляется разделенному M этапный многофазный фильтр, выходные параметры этапов M вычисляются и обусловливаются для доставки к M - БПФ точки. Перемена данных через фильтр вводит зависимый частотой сдвиг фазы. Чтобы откорректировать для этой фазы переключают и искажают все полосы к DC, буфер циклического сдвига вставляется после многофазных фильтров и перед M - БПФ точки.
С переключателем коммутатора, сопровождаемым M этапный многофазный фильтр, буфер циклического сдвига, и матрица ДПФ, эффективное внедрение lowpass выглядит так основанный на прототипе набор фильтров.
[1] Харрис, Фредерик Дж, многоскоростная обработка сигналов для систем связи, PTR Prentice Hall, 2004.
[2] Харрис, F.J., Крис Дик и Майкл Райс. "Цифровые приемники и передатчики Используя многофазные наборы фильтров для радиосвязей". IEEE® Транзакции на Микроволновой Теории и Методах. 51, № 4 (2003).
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
coeffs
| tf
| polyphase
| freqz
| fvtool
| bandedgeFrequencies
| centerFrequencies
| getFilters
dsp.ChannelSynthesizer
| dsp.FIRHalfbandDecimator
| dsp.FIRHalfbandInterpolator
| dsp.IIRHalfbandDecimator
| dsp.DyadicAnalysisFilterBank
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.