dsp. FIRHalfbandDecimator

Описание

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

Отфильтровать и субдискретизировать ваши данные:

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

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

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

Создание

Синтаксис

firhalfbanddecim = dsp.FIRHalfbandDecimator
firhalfbanddecim = dsp.FIRHalfbandDecimator(Name,Value)

Описание

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

пример

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

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

Свойства

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

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

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

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

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

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

  • 'Filter order and stopband attenuation' – Отфильтруйте порядок, и затухание полосы задерживания параметры проекта.

  • 'Filter order and transition width' – Отфильтруйте порядок, и ширина перехода параметры проекта.

Фильтр разработан с помощью оптимального метода разработки фильтра equiripple.

Когда вы устанавливаете 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

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

Зависимости

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

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

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

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

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

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

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

Размер слова вывода - то же самое как размер слова входа. Дробная продолжительность вывода вычисляется таким образом, что целый динамический диапазон вывода может быть представлен без переполнения. Для получения дополнительной информации о том, как дробная продолжительность вывода вычисляется, см. Правила Точности Фиксированной точки для Предотвращения Переполнения в КИХ-Фильтрах.

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

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

ylow = firhalfbanddecim(x)
[ylow,yhigh] = firhalfbanddecim(x)

Описание

пример

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 decimator выходной параметр, возвращенный как вектор-столбец или матрица. Вывод, ylow является lowpass полуполосой отфильтрованная и субдискретизируемая версия входа x. Из-за природы полуполосы фильтра, фактор субдискретизации всегда равняется 2.

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

Поддиапазон Highpass decimator выходной параметр, возвращенный как вектор-столбец или матрица. Вывод, yhigh является highpass полуполосой отфильтрованная и субдискретизируемая версия входа 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 децимирующий фильтр полуполосы для данных, выбранных на уровне 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).

Примечание: dsp.AudioFileReader и Системные объекты audioDeviceWriter не поддержаны в MATLAB Online.

Настройте читателя звукового файла, аналитический набор фильтров, средство записи аудио устройства и фильтр интерполяции. Уровень выборки аудиоданных составляет 22 050 Гц. Порядок полуленточного фильтра равняется 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)

Считайте речевой сигнал из звукового файла в кадрах 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).

Примечание: dsp.AudioFileReader и Системные объекты audioDeviceWriter не поддержаны в 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] = step(hfirhalfbanddecim,x);

Больше о

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

Алгоритмы

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

Ссылки

[1] Харрис, Обработка сигналов Ф.Дж. Малтирэйта для Систем связи, Prentice Hall, 2004, стр 208–209.

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

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

Введенный в R2014b