Полуполоса decimator
dsp.FIRHalfbandDecimator
Система object™ выполняет эффективную многофазную децимацию входного сигнала на коэффициент два. Можно использовать dsp.FIRHalfbandDecimator
реализовывать аналитический фрагмент банка 2D ленточного фильтра, чтобы отфильтровать сигнал в lowpass и highpass поддиапазоны. dsp.FIRHalfbandDecimator
использует КИХ equiripple проект, чтобы создать полуленточные фильтры и многофазную реализацию, чтобы отфильтровать вход.
Отфильтровать и проредить ваши данные:
Создайте dsp.FIRHalfbandDecimator
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?
возвращает полуполосу decimator, firhalfbanddecim
= dsp.FIRHalfbandDecimatorfirhalfbanddecim
, с настройками по умолчанию. При настройках по умолчанию Системный объект фильтрует и прореживает входные данные с частотой полуполосы 11025
Гц, ширина перехода 4.1
kHz и затухание в полосе задерживания 80
дБ.
возвращает полуполосу decimator, с дополнительными свойствами, заданными одним или несколькими firhalfbanddecim
= dsp.FIRHalfbandDecimator(Name,Value
)Name,Value
парные аргументы.
firhalfbanddecim = dsp.FIRHalfbandDecimator('Specification','Filter order and stopband attenuation')
создает полуполосу FIR decimator объект с набором порядка фильтра к 52 и набором затухания в полосе задерживания к 80 дБ.Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
Specification
— Параметры создания фильтра'Transition width and stopband attenuation'
(значение по умолчанию) | 'Filter order and stopband attenuation'
| 'Filter order and transition width'
| 'Coefficients'
Параметры создания фильтра в виде вектора символов. Когда вы устанавливаете Specification
к одному из следующих вы выбираете два из трех доступных расчетных параметров, чтобы спроектировать КИХ-Полуленточный фильтр.
'Transition width and stopband attenuation'
– Ширина перехода и затухание в полосе задерживания являются расчетными параметрами.
'Filter order and stopband attenuation'
– Порядок фильтра и затухание в полосе задерживания являются расчетными параметрами.
'Filter order and transition width'
– Порядок фильтра и ширина перехода являются расчетными параметрами.
Фильтр создан с использованием оптимальный equiripple метод создания фильтра.
Когда вы устанавливаете Specification
к 'Coefficients'
, вы задаете коэффициенты полуленточного фильтра непосредственно через Numerator
свойство.
FilterOrder
— Порядок фильтра
(значение по умолчанию) | даже положительное целое числоПорядок фильтра в виде ровного положительного целого числа.
Это свойство применяется, когда вы устанавливаете Specification
к любому 'Filter order and stopband attenuation'
или 'Filter order and transition width'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandAttenuation
— Затухание в полосе задерживания
(значение по умолчанию) | положительный действительный скалярЗатухание в полосе задерживания в дБ в виде положительного действительного скаляра.
Это свойство применяется, когда вы устанавливаете Specification
к любому 'Filter order and stopband attenuation'
или 'Transition width and stopband attenuation'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
TransitionWidth
— Ширина перехода
(значение по умолчанию) | положительный действительный скалярШирина перехода в Гц в виде положительного действительного скаляра. Значение ширины перехода в Гц должно быть меньше 1/2 входная частота дискретизации.
Это свойство применяется, когда вы устанавливаете Specification
к любому 'Transition width and stopband attenuation'
или 'Filter order and transition width'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Numerator
— КИХ-коэффициенты полуленточного фильтраfirhalfband('minorder',0.407,1e-4)
(значение по умолчанию) | вектор-строкаКИХ-коэффициенты полуленточного фильтра в виде вектора-строки. Коэффициенты должны выполнить формат импульсной характеристики полуполосы FIR. Для получения дополнительной информации на этом формате, смотрите Полуленточные фильтры и КИХ-Проект Полуленточного фильтра. Если половина порядка фильтра, (length(Numerator) - 1)/2
, является четным, любой коэффициент, начинающий с первого коэффициента, должен быть нулем за исключением центрального коэффициента, который должен быть 0.5. Если половина порядка фильтра является нечетной, последовательность переменных нулей с 0.5 в центре запускается во втором коэффициенте.
Это свойство применяется, когда вы устанавливаете Specification
к 'Coefficients'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
SampleRate
— Введите частоту дискретизации
(значение по умолчанию) | положительный действительный скалярВведите частоту дискретизации в Гц в виде положительного действительного скаляра. Входные значения по умолчанию частоты дискретизации к 44 100 Гц. Если вы задаете ширину перехода как один из ваших параметров создания фильтра, ширина перехода не может превысить 1/2 входная частота дискретизации.
Типы данных: single
| double
CoefficientsDataType
— Word и дробные длины коэффициентовnumerictype(1,16)
(значение по умолчанию) | numerictype
объектWord и дробные длины коэффициентов в виде numerictype
без знака или со знаком объект. Значение по умолчанию,
numerictype(1,16)
соответствует числовому текстовому объекту со знаком с 16-битными коэффициентами и дробной длиной, определенной на основе содействующих значений, чтобы дать самую лучшую точность.
Это свойство не является настраиваемым.
Размер слова выхода - то же самое как размер слова входа. Дробная продолжительность выхода вычисляется таким образом, что целый динамический диапазон выхода может быть представлен без переполнения. Для получения дополнительной информации о том, как дробная продолжительность выхода вычисляется, см. Правила Точности Фиксированной точки для Предотвращения Переполнения в КИХ-Фильтрах.
RoundingMethod
— Округление метода для выходных операций фиксированной точки'Floor'
(значение по умолчанию) | 'Ceiling'
| 'Convergent'
| 'Nearest'
| 'Round'
| 'Simplest'
| 'Zero'
Округление метода для выходных операций фиксированной точки в виде вектора символов. Для получения дополнительной информации об округляющихся режимах смотрите Точность и Область значений.
[
вычисляет ylow
,yhigh
] = firhalfbanddecim(x
)ylow
и yhigh
, из аналитического набора фильтров, firhalfbanddecim
для входа x
. Ki-by-N входная матрица обработан как N независимые каналы. Системный объект генерирует два дополнительных к степени выходных сигнала путем добавления и вычитания двух многофазных ветвей выходные параметры соответственно. ylow
и yhigh
одного размера (Ko-by-N) и тип данных. Ko = Ki/2, где 2
фактор децимации.
x
— Ввод данныхВвод данных в виде вектор-столбца или матрицы. Если входной сигнал является матрицей, каждый столбец матрицы обработан как независимый канал. Количество строк во входном сигнале должно быть кратным 2.
Этот входной сигнал переменного размера поддержки объектов.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
Поддержка комплексного числа: Да
ylow
— Поддиапазон Lowpass decimator выводитсяПоддиапазон lowpass decimator выходной параметр, возвращенный как вектор-столбец или матрица. Выход, ylow
полуполоса lowpass отфильтрованная и прореженная версия входа x
. Из-за природы полуполосы фильтра, фактор субдискретизации всегда равняется 2.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
Поддержка комплексного числа: Да
yhigh
— Поддиапазон Highpass decimator выводитсяПоддиапазон Highpass decimator выходной параметр, возвращенный как вектор-столбец или матрица. Выход, yhigh
highpass полуполоса отфильтрованная и прореженная версия входа x
. Из-за природы полуполосы фильтра, фактор субдискретизации всегда равняется 2.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
Поддержка комплексного числа: Да
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
dsp.FIRHalfbandDecimator
freqz | Частотная характеристика дискретного времени фильтрует Системный объект |
fvtool | Визуализируйте частотную характеристику фильтров DSP |
info | Информация о Системном объекте фильтра |
cost | Оцените стоимость реализации Системного объекта фильтра |
coeffs | Возвращает коэффициенты Системного объекта фильтра в структуре |
polyphase | Многофазное разложение многоскоростного фильтра |
Создайте децимирующий фильтр полуполосы lowpass для данных, произведенных на уровне 44,1 кГц. Уровень выходных данных является 1/2 входная частота дискретизации, или 22,05 кГц. Задайте порядка фильтра, чтобы быть 52 с шириной перехода 4,1 кГц.
Fs = 44.1e3; filterspec = 'Filter order and transition width'; Order = 52; TW = 4.1e3; firhalfbanddecim = dsp.FIRHalfbandDecimator(... 'Specification',filterspec, ... 'FilterOrder',Order, ... 'TransitionWidth',TW, ... 'SampleRate',Fs);
Постройте импульсную характеристику. Коэффициент нулевого порядка задерживается 26 выборок, который равен групповой задержке фильтра. Это дает к причинному фильтру полуполосы.
fvtool(firhalfbanddecim,... 'Analysis','impulse')
Постройте величину и фазовый отклик.
fvtool(firhalfbanddecim,... 'Analysis','freq')
Используйте аналитический набор фильтров полуполосы и фильтр интерполяции, чтобы извлечь низкочастотный поддиапазон из речевого сигнала.
Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step
синтаксис. Например, obj(x)
становится step(obj,x)
.
Примечание: audioDeviceWriter
Система object™ не поддерживается в MATLAB Online.
Настройте читателя звукового файла, аналитический набор фильтров, средство записи аудио устройства и фильтр интерполяции. Частота дискретизации аудиоданных составляет 22 050 Гц. Порядок полуленточного фильтра равняется 52 с шириной перехода 2 кГц.
afr = dsp.AudioFileReader(... 'speech_dft.mp3',... 'SamplesPerFrame',1024); filtSpec = 'Filter order and transition width'; Order = 52; TW = 2000; firhalfbanddecim = dsp.FIRHalfbandDecimator(... 'Specification',filtSpec,... 'FilterOrder',Order,... 'TransitionWidth',TW,... 'SampleRate',afr.SampleRate); firhalfbandinterp = dsp.FIRHalfbandInterpolator(... 'Specification',filtSpec,... 'FilterOrder',Order,... 'TransitionWidth',TW,... 'SampleRate',afr.SampleRate/2); adw = audioDeviceWriter('SampleRate',... afr.SampleRate);
Просмотрите ответ величины полуленточного фильтра.
fvtool(firhalfbanddecim)
Считайте речевой сигнал из звукового файла в системах координат 1 024 выборок. Отфильтруйте речевой сигнал в lowpass и highpass поддиапазоны с частотой полуполосы 5 512,5 Гц. Восстановите приближение lowpass речевого сигнала путем интерполяции поддиапазона lowpass. Проигрывайте отфильтрованный выход.
while ~isDone(afr) audioframe = afr(); xlo = firhalfbanddecim(audioframe); ylow = firhalfbandinterp(xlo); adw(ylow); end
Ожидайте, пока звуковой файл не проигрывается в конец, затем закройте входной файл и выпустите ресурс аудиовыхода.
release(afr); release(adw);
Используйте полуполосу decimator и интерполятор, чтобы реализовать двухканальный набор фильтров. Этот пример использует вход звукового файла и показывает, что спектр мощности набора фильтров выход значительно не отличается от входа.
Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).
Примечание: audioDeviceWriter
Система object™ не поддерживается в MATLAB Online.
Настройте средство записи средства чтения и устройства звукового файла. Создайте полуполосу FIR decimator и интерполятор. Наконец, настройте спектр анализатор, чтобы отобразить спектры мощности ввода и вывода набора фильтров.
AF = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024); AP = audioDeviceWriter('SampleRate',AF.SampleRate); filterspec = 'Filter order and transition width'; Order = 52; TW = 2000; firhalfbanddecim = dsp.FIRHalfbandDecimator(... 'Specification',filterspec,'FilterOrder',Order,... 'TransitionWidth',TW,'SampleRate',AF.SampleRate); firhalfbandinterp = dsp.FIRHalfbandInterpolator(... 'Specification',filterspec,'FilterOrder',Order,... 'TransitionWidth',TW,'SampleRate',AF.SampleRate/2,... 'FilterBankInputPort',true); SpecAna = dsp.SpectrumAnalyzer('SampleRate',AF.SampleRate,... 'PlotAsTwoSidedSpectrum',false,'ReducePlotRate',false,... 'ShowLegend',true,... 'ChannelNames',{'Input signal','Filtered output signal'});
Считайте аудио 1 024 выборки за один раз. Отфильтруйте вход, чтобы получить lowpass и highpass сигналы поддиапазона, подкошенные на коэффициент два. Это - аналитический набор фильтров. Используйте интерполятор полуполосы в качестве набора фильтров синтеза. Отобразите рабочий спектр мощности аудиовхода и выход набора фильтров синтеза. Проигрывайте выход.
while ~isDone(AF) audioInput = AF(); [xlo,xhigh] = firhalfbanddecim(audioInput); audioOutput = firhalfbandinterp(xlo,xhigh); spectrumInput = [audioInput audioOutput]; SpecAna(spectrumInput); AP(audioOutput); end release(AF); release(AP); release(SpecAna);
Создайте полуполосу decimator для данных, произведенных на уровне 44,1 кГц. Используйте проект минимального порядка с шириной перехода 2 кГц и затуханием в полосе задерживания 60 дБ.
hfirhalfbanddecim = dsp.FIRHalfbandDecimator(... 'Specification',... 'Transition width and stopband attenuation',... 'TransitionWidth',2000,... 'StopbandAttenuation',60,... 'SampleRate',44.1e3);
Отфильтруйте двухканальный вход в низкие и highpass поддиапазоны.
x = randn(1024,2); [ylow,yhigh] = hfirhalfbanddecim(x);
Идеальным полуленточным фильтром lowpass дают
Идеальный фильтр не осуществим, потому что импульсная характеристика является непричинной и не абсолютно суммируемой. Однако импульсная характеристика идеального фильтра lowpass обладает некоторыми важными свойствами, которые требуются осуществимого приближения. А именно, идеальная импульсная характеристика полуленточного фильтра lowpass:
равняйтесь 0 для всех даже индексированных выборок
равняйтесь 1/2 в n=0. Вы видите это при помощи правила Лопиталя об эквиваленте с непрерывным знаком импульсной характеристики дискретного времени.
Идеалом highpass полуленточный фильтр дают
Оценка предыдущего интеграла дает следующую импульсную характеристику
Идеал highpass импульс полуленточного фильтра:
равняйтесь 0 для всех даже индексированных выборок
равняйтесь 1/2 в n=0.
dsp.FIRHalfbandDecimator
использует причинное КИХ-приближение для идеального ответа полуполосы, который основан на минимизации норма ошибки (минимакс). Дополнительную информацию см. в Алгоритмах.
dsp.FIRHalfbandDecimator
использует минимаксный КИХ-проект, чтобы спроектировать fullband линейный фильтр фазы с желаемыми техническими требованиями. Фильтр fullband сверхдискретизирован так, чтобы даже индексированные выборки фильтра были заменены нулями. Повышающая дискретизация фильтра производит фильтр полуполосы. Наконец, касание фильтра, соответствующее групповой задержке фильтра в выборках, установлено равное 1/2. Это дает к причинному приближению КИХ-фильтра линейной фазы идеальному полуленточному фильтру, заданному в Полуленточных фильтрах. См. [1] для описания этого метода создания фильтра с помощью алгоритма обмена Remez.
dsp.FIRHalfbandDecimator
использует эффективную многофазную реализацию для полуленточных фильтров, когда вы фильтруете входной сигнал. Главное преимущество многофазной реализации состоит в том, что можно проредить сигнал до фильтрации. Это позволяет вам фильтровать на более низкой частоте дискретизации.
Разделение импульсной характеристики фильтра, h(n), в два многофазных результата компонентов в ровном многофазном компоненте с z - преобразовывает
и нечетный многофазный компонент с z - преобразовывает
z - преобразование фильтра может быть записано в терминах четных и нечетных многофазных компонентов как
Графически, можно представлять фильтрацию и ввести сопровождаемый путем субдискретизации два со следующей фигурой
Используя многоскоростную благородную идентичность для субдискретизации, можно переместить операцию субдискретизации перед фильтрацией. Это позволяет вам фильтровать на более низком уровне.
Для полуленточного фильтра единственный ненулевой коэффициент в ровном многофазном компоненте является коэффициентом, соответствующим z0. Реализация полуленточного фильтра как причинный КИХ-фильтр переключает ненулевой коэффициент к приблизительно z-N/4 где N является количеством касаний фильтра. Этот процесс проиллюстрирован в следующем рисунке.
Главный график показывает полуленточный фильтр порядка 52. Нижний график показывает ровный многофазный компонент. Оба из этих фильтров являются непричинными. Задержка ровного многофазного компонента 13 выборками создает причинный КИХ-фильтр.
Эффективно реализовывать полуполосу decimator, dsp.FIRHalfbandDecimator
заменяет блок задержки и оператор субдискретизации с переключателем коммутатора. Это проиллюстрировано в следующем рисунке, где один многофазный компонент заменяется усилением и задержкой.
Переключатель коммутатора берет входные выборки из одной ветви и предоставляет любую выборку к одному из двух многофазных компонентов для фильтрации. Это половины частота дискретизации входного сигнала. То, которое многофазный компонент уменьшает до простой задержки, зависит от того, является ли половина порядка фильтра четной или нечетная. Это вызвано тем, что задержка, требуемая сделать ровный многофазный компонент причинным, может быть нечетной или даже в зависимости от фильтра половина порядка. Вы видите это путем осмотра многофазных компонентов следующих фильтров.
filterspec = 'Filter order and stopband attenuation' ; halfOrderEven = dsp.FIRHalfbandDecimator('Specification',filterspec,... 'FilterOrder',64,'StopbandAttenuation',80); halfOrderOdd = dsp.FIRHalfbandDecimator('Specification',filterspec,... 'FilterOrder', 54,'StopbandAttenuation',80); polyphase(halfOrderEven) polyphase(halfOrderOdd)
Подводя итоги, dsp.FIRHalfbandDecimator
десятикратно уменьшает вход до фильтрации и фильтрует четные и нечетные многофазные компоненты входа отдельно с четными и нечетными многофазными компонентами фильтра.
использует то, что один фильтр многофазный компонент является простой задержкой полуленточного фильтра.
[1] Харрис, Обработка сигналов Ф.Дж. Малтирэйта для Систем связи, Prentice Hall, 2004, стр 208–209.
Указания и ограничения по применению:
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
Эта генерация кода поддержки объектов для ARM® Кора®- M и процессоры ARM Cortex-A.
dsp.FIRHalfbandInterpolator
| dsp.IIRHalfbandDecimator
| dsp.DyadicAnalysisFilterBank
| dsp.Channelizer
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.