dsp.FIRHalfbandDecimator

Описание

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

Отфильтровать и проредить ваши данные:

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

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

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

Создание

Описание

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

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

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

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

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

Описание

пример

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

Для просмотра документации необходимо авторизоваться на сайте