dsp.FIRHalfbandDecimator

Полудиапазонный дециматор

Описание

The dsp.FIRHalfbandDecimator Система object™ выполняет эффективное полифазное десятикратное уменьшение входного сигнала в два раза. Можно использовать dsp.FIRHalfbandDecimator для реализации фрагмента анализа двухдиапазонной группы фильтров для фильтрации сигнала в поддиапазоны lowpass и highpass. dsp.FIRHalfbandDecimator использует конечную импульсную характеристику equiripple проекта для создания полуполосы фильтров и полифазы реализацию для фильтрации входа.

Чтобы фильтровать и понижать значения данных:

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

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

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

Создание

Описание

firhalfbanddecim = dsp.FIRHalfbandDecimator возвращает полудиапазонный дециматор, firhalfbanddecim, с настройками по умолчанию. В настройках по умолчанию Системный объект фильтрует и понижает частоту входных данных с полуполосой частотой 11025 Гц, ширина перехода 4.1 кГц и затухание в полосе задерживания 80 дБ.

пример

firhalfbanddecim = dsp.FIRHalfbandDecimator(Name,Value) возвращает полудиапазонный дециматор с дополнительными свойствами, заданными одним или несколькими Name,Value аргументы в виде пар.

Пример: firhalfbanddecim = dsp.FIRHalfbandDecimator('Specification','Filter order and stopband attenuation') создает объект полуполосы конечной импульсной характеристики с порядком фильтра 52 и затуханием в полосе задерживания 80 дБ.

Свойства

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

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

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

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

Фильтруйте параметры проекта, заданные как вектор символов. Когда вы задаете Specification для одного из следующих вариантов выберите два из трёх доступных расчётных параметров для разработки конечной импульсной характеристики Полуполосы фильтра.

  • 'Transition width and stopband attenuation' - Ширина перехода и затухание в полосе задерживания являются расчётными параметрами.

  • 'Filter order and stopband attenuation' - Порядок фильтра и затухание в полосе задерживания являются расчётными параметрами.

  • 'Filter order and transition width' - Порядок фильтра и ширина перехода являются расчётными параметрами.

Фильтр разработан с использованием оптимального метода создания фильтра равновесия.

Когда вы задаете Specification на 'Coefficients', вы задаете коэффициенты полуполосного фильтра непосредственно через Numerator свойство.

Порядок фильтра, заданный как четное положительное целое число.

Зависимости

Это свойство применяется при установке Specification к любому из 'Filter order and stopband attenuation' или 'Filter order and transition width'.

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

Затухание в полосе задерживания в дБ, заданное как положительный действительный скаляр.

Зависимости

Это свойство применяется при установке Specification к любому из 'Filter order and stopband attenuation' или 'Transition width and stopband attenuation'.

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

Ширина перехода в Гц, заданная как положительный действительный скаляр. Значение ширины перехода в Гц должно быть менее 1/2 входной частоты выборки.

Зависимости

Это свойство применяется при установке Specification к любому из 'Transition width and stopband attenuation' или 'Filter order and transition width'.

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

Конечная импульсная характеристика полуполосы фильтрация коэффициентов, заданная как вектор-строка. Коэффициенты должны соответствовать конечной импульсной характеристике полуполосному формату импульсной характеристики. Для получения дополнительной информации об этом формате, смотрите Halfband Filters и Конечную Импульсную Характеристику Halfband Filter Design. Если половина порядка фильтра, (length(Numerator) - 1)/2, является четным, каждый другой коэффициент, начиная с первого коэффициента, должен быть нулем, за исключением центрального коэффициента, который должен быть 0,5. Если половина порядка фильтра нечетна, последовательность чередующихся нулей с 0,5 в центре начинается со второго коэффициента.

Зависимости

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

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

Входная частота выборки в Гц, заданная как положительный действительный скаляр. Скорость входа выборки по умолчанию составляет 44100 Гц. Если вы задаете ширину перехода в качестве одного из параметров создания фильтра, ширина перехода не может превышать 1/2 входной частоты выборки.

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

Свойства с фиксированной точкой

Длина слова и дроби коэффициентов, заданная как numerictype со знаком или без знака объект. Значение по умолчанию, numerictype(1,16) соответствует объекту числового типа со знаком с 16-битными коэффициентами и длиной дроби, определенной на основе значений коэффициентов, чтобы получить максимально возможную точность.

Это свойство не настраивается.

Размер слова на выходе совпадает с размером слова на входе. Длина дроби выхода вычисляется таким образом, чтобы вся динамическая область значений выхода могла быть представлен без переполнения. Для получения дополнительной информации о том, как вычисляется длина дроби выхода, смотрите Правила точности по фиксированной точке для предотвращения переполнения в конечную импульсную характеристику фильтрах.

Метод округления для выходных операций с фиксированной точкой, заданный как вектор символов. Для получения дополнительной информации о режимах округления см. Раздел «Точность и область значений».

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

Описание

пример

ylow = firhalfbanddecim(x) фильтрует входной сигнал x использование конечной импульсной характеристики полуполосы фильтра, firhalfbanddecimи понижает выходной параметр в 2 раза.

пример

[ylow,yhigh] = firhalfbanddecim(x) вычисляет ylow и yhigh, банка фильтров анализа, firhalfbanddecim для входных x. Входная матрица Ki -by N рассматривается как N независимые каналы. Системный объект генерирует два дополнительных по мощности выходных сигнала путем сложения и вычитания двух выходов полифазной ветви соответственно. ylow и yhigh имеют одинаковый размер (Ko -by - N) и тип данных. Ko = Ki/2, где 2 - десятикратное уменьшение.

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

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

Вход данных, заданный как вектор-столбец или матрица. Если входной сигнал является матрицей, каждый столбец матрицы рассматривается как независимый канал. Количество строк в входном сигнале должно быть кратным 2.

Этот объект поддерживает входной сигнал переменного размера.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

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

Lowpass поддиапазон выхода дециматора, возвращенный как вектор-столбец или матрица. Выход, ylow - lowpass halfband, фильтрация и понижающая дискретизацию версии входного x. Из-за полуполосного характера фильтра коэффициент понижающей дискретизации всегда равен 2.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

Поддиапазон Highpass дециматора выхода, возвращенный как вектор-столбец или матрица. Выход, yhigh является высокочастотной полуполосной отфильтрованной и понижающей дискретизации версии входного x. Из-за полуполосного характера фильтра коэффициент понижающей дискретизации всегда равен 2.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

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

release(obj)

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

freqzЧастотная характеристика фильтра в дискретном времени Системного объекта
fvtoolВизуализация частотной характеристики фильтров DSP
infoИнформация о фильтре Системный объект
costОценка стоимости реализации фильтра Системный объект
coeffsВозвращает фильтрация коэффициентов системного объекта в структуре
polyphaseПолифаза разложение многоскоростного фильтра
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Создайте lowpass halfband децимирующий фильтр для данных, выбранных с частотой 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')

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Постройте график величины и фазового отклика.

fvtool(firhalfbanddecim,'Analysis','freq')

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

Используйте банк фильтров полуполосного анализа и интерполяционный фильтр, чтобы извлечь низкочастотный поддиапазон из речевого сигнала.

Примечание. Если вы используете R2016a или более ранний релиз, замените каждый вызов объекта эквивалентным step синтаксис. Для примера, obj(x) становится step(obj,x).

Примечание: The audioDeviceWriter Системная object™ не поддерживается в MATLAB Online.

Настройте считыватель аудио файла, банк фильтров анализа, аудио устройство средства записи и интерполяционный фильтр. Частота дискретизации аудио данных составляет 22050 Гц. Порядок полуполосного фильтра составляет 52 с шириной перехода 2 кГц.

afr = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);

filterspec = 'Filter order and transition width';
Order = 52;
TW = 2000;

firhalfbanddecim = dsp.FIRHalfbandDecimator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',afr.SampleRate);

firhalfbandinterp = dsp.FIRHalfbandInterpolator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',afr.SampleRate/2);

adw = audioDeviceWriter('SampleRate',afr.SampleRate);

Просмотрите величину ответ полуполосы фильтра.

fvtool(firhalfbanddecim)

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 2 objects of type line.

Считайте речевой сигнал от аудио файла в системы координат из 1024 выборок. Фильтрация речевого сигнала в поддиапазоны lowpass и highpass с частотой полуполосой 5512,5 Гц. Восстановите lowpass приближение речевого сигнала путем интерполяции lowpass поддиапазона. Воспроизведение отфильтрованного выхода.

while ~isDone(afr)
  audioframe = afr();
  xlo = firhalfbanddecim(audioframe);
  ylow = firhalfbandinterp(xlo);
  adw(ylow);
end

Подождите, пока аудиофайл не будет воспроизведен до конца, затем закройте файл входа и отпустите ресурс аудиофайла выхода.

release(afr);           
release(adw);

Используйте полуполосный дециматор и интерполятор, чтобы реализовать двухканальный банк фильтров. Этот пример использует файл аудио входа и показывает, что степень спектр выхода банка фильтров не значительно отличается от входа.

Примечание.Если вы используете R2016a или более ранний релиз, замените каждый вызов объекта эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).

Примечание: The audioDeviceWriter Системная object™ не поддерживается в MATLAB Online.

Настройте устройство чтения аудио файла и средства записи устройства. Создайте конечную импульсную характеристику полуполосы дециматор и интерполятор. Наконец, установите анализатор спектра, чтобы отобразить степень спектры входа и выхода банка фильтров.

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'});

Считывайте аудио 1024 выборки за раз. Фильтрация входов для получения 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);

Создайте полудиапазонный дециматор для данных, дискретизированных с частотой 44,1 кГц. Используйте проект минимального порядка с шириной перехода 2 кГц и затуханием в полосе задерживания 60 дБ.

hfirhalfbanddecim = dsp.FIRHalfbandDecimator(...
    'Specification','Transition width and stopband attenuation',...
    'TransitionWidth',2000,'StopbandAttenuation',60,'SampleRate',44.1e3);

Фильтрация двухканального входа в низкие и высокочастотные поддиапазоны

x = randn(1024,2);
[ylow,yhigh] = step(hfirhalfbanddecim,x);

Подробнее о

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

Алгоритмы

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

Ссылки

[1] Harris, F.J. Multirate Signal Processing for Communication Systems, Prentice Hall, 2004, pp. 208-209.

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

.

Преобразование с фиксированной точкой
Разрабатывайте и моделируйте системы с фиксированной точкой с помощью Fixed-Point Designer™.

Введенный в R2014b