Двухканальный набор фильтров Используя полуполосу Decimators и интерполяторы полуполосы

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

Эти функции реализуют полуполосу decimators и интерполяторы полуполосы в DSP System Toolbox™.

Двухканальный аналитический набор фильтров принимает широкополосный сигнал как вход и разделяет этот сигнал в lowpass и highpass сигналы поддиапазона. Двухканальный набор фильтров синтеза принимает lowpass и highpass сигналы поддиапазона как входные параметры и восстанавливает широкополосный сигнал с помощью этих двух поддиапазонов.

Используйте или полуполосу FIR или БИХ-полуленточные фильтры в наборе фильтров. Каждый фильтр имеет свои собственные преимущества и недостатки, и ваш выбор должен зависеть от вычислительных требований приложения. БИХ-фильтры требуют, чтобы меньше коэффициентов, чем КИХ-фильтры выполнило подобные операции фильтрации. БИХ-фильтры работают быстрее и требуют меньшего пространства памяти. Однако КИХ-фильтры всегда устойчивы. Когда коэффициенты КИХ-фильтра симметричны или антисимметричны, фильтр показывает линейный фазовый отклик.

Используйте вход звукового файла и сравните спектр мощности набора фильтров выход с тем из входного сигнала. Затем сравните стоимость реализации и КИХ и БИХ-банки полуленточного фильтра.

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

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

КИХ-полуполоса двухканальный набор фильтров

Настройте средство записи средства чтения и устройства звукового файла. Создайте полуполосу FIR decimator и интерполятор, чтобы спроектировать фильтр минимального порядка с шириной перехода 2 000 Гц и затуханием в полосе задерживания 80 дБ. Наконец, настройте спектр анализатор, чтобы отобразить спектры мощности ввода и вывода набора фильтров.

AF = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);
AP = audioDeviceWriter('SampleRate',AF.SampleRate);

filterspec = 'Transition width and stopband attenuation';
TW = 2000;
Astop = 80;

firhalfbanddecim = dsp.FIRHalfbandDecimator(...
    'Specification',filterspec, ...
    'StopbandAttenuation',Astop,...
    'TransitionWidth',TW, ...
    'SampleRate',AF.SampleRate);

firhalfbandinterp = dsp.FIRHalfbandInterpolator(...
    'Specification',filterspec, ...
    'StopbandAttenuation',Astop,...
    '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 сигналы поддиапазона, подкошенные на коэффициент два. Это - аналитический фрагмент набора фильтров. Используйте интерполятор полуполосы FIR в качестве набора фильтров синтеза. Отобразите рабочий спектр мощности аудиовхода и выход набора фильтров синтеза. Проигрывайте выход с помощью средства записи аудио устройства.

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

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 2 objects of type line. These objects represent Input signal, Filtered output signal.

БИХ-полуполоса двухканальный набор фильтров

Создайте полуполосу IIR decimator и интерполятор. Фильтры имеют минимальный порядок, имеют ширину перехода 2 000 Гц и затухание в полосе задерживания 80 дБ. Настройте спектр анализатор, чтобы отобразить спектры мощности входа набора фильтров и выхода.

AF = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);
AP = audioDeviceWriter('SampleRate',AF.SampleRate);

filterspec = 'Transition width and stopband attenuation';
TW = 2000;
Astop = 80;

iirhalfbanddecim = dsp.IIRHalfbandDecimator(...
    'Specification',filterspec,'StopbandAttenuation',Astop,...
    'TransitionWidth',TW,'SampleRate',AF.SampleRate);

iirhalfbandinterp = dsp.IIRHalfbandInterpolator(...
    'Specification',filterspec,'StopbandAttenuation',Astop,...
    '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 сигналы поддиапазона, подкошенные на коэффициент два. Это - аналитический фрагмент набора фильтров. Используйте интерполятор полуполосы IIR в качестве набора фильтров синтеза. Отобразите рабочий спектр мощности аудиовхода и выход набора фильтров синтеза. Проигрывайте выход с помощью средства записи аудио устройства.

while ~isDone(AF)
    audioInput = AF();
    [xlo,xhigh] = iirhalfbanddecim(audioInput);
    audioOutput = iirhalfbandinterp(xlo,xhigh);
    spectrumInput = [audioInput audioOutput];
    SpecAna(spectrumInput);
    AP(audioOutput);
end

release(AF);
release(AP);
release(SpecAna);

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 2 objects of type line. These objects represent Input signal, Filtered output signal.

Сравните стоимость

Сравните стоимость реализации полуполосы FIR и IIR decimators использование cost функция. Вы видите, что полуполоса IIR decimator в вычислительном отношении более эффективна.

cost(firhalfbanddecim)
ans = struct with fields:
                  NumCoefficients: 27
                        NumStates: 50
    MultiplicationsPerInputSample: 13.5000
          AdditionsPerInputSample: 13

cost(iirhalfbanddecim)
ans = struct with fields:
                  NumCoefficients: 5
                        NumStates: 7
    MultiplicationsPerInputSample: 2.5000
          AdditionsPerInputSample: 5

Сравните стоимость реализации интерполяторов полуполосы FIR и IIR. Снова, вычислительная стоимость реализации интерполятора полуполосы IIR намного меньше по сравнению с вычислительной стоимостью реализации полуполосы IIR decimator.

cost(firhalfbandinterp)
ans = struct with fields:
                  NumCoefficients: 26
                        NumStates: 25
    MultiplicationsPerInputSample: 26
          AdditionsPerInputSample: 25

cost(iirhalfbandinterp)
ans = struct with fields:
                  NumCoefficients: 5
                        NumStates: 7
    MultiplicationsPerInputSample: 5
          AdditionsPerInputSample: 10

Сравните групповую задержку

Можно также сравнить групповую задержку КИХ и БИХ-полуленточных фильтров.

Используйте fvtool отобразить ответ групповой задержки полуполосы FIR и БИХ-полуленточных фильтров в decimator. КИХ-полуленточный фильтр имеет линейный фазовый отклик с групповой задержкой 25 выборок. БИХ-полуленточный фильтр имеет нелинейный фазовый отклик, особенно вокруг частоты среза фильтра. Постоянная групповая задержка гарантирует, что все частотные составляющие задерживаются то же самым значением.

h = fvtool(firhalfbanddecim,iirhalfbanddecim,'grpdelay');
legend('FIR','IIR')
title('Group Delay response of Halfband Decimators')
h.CurrentAxes.YLim = [0, 40];

Figure Filter Visualization Tool - Group delay contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Group Delay response of Halfband Decimators contains 2 objects of type line. These objects represent FIR, IIR.

Так же в интерполяторе, КИХ-полуленточный фильтр имеет линейный фазовый отклик, в то время как БИХ-полуленточный фильтр имеет нелинейный фазовый отклик.

h = fvtool(firhalfbandinterp,iirhalfbandinterp,'grpdelay');
legend('FIR','IIR')
title('Group Delay response of Halfband Interpolators')
h.CurrentAxes.YLim = [0, 40];

Figure Filter Visualization Tool - Group delay contains an axes object and other objects of type uitoolbar, uimenu. The axes object with title Group Delay response of Halfband Interpolators contains 2 objects of type line. These objects represent FIR, IIR.

Смотрите также

Объекты

Похожие темы

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