Lowpass Создания фильтра в MATLAB

В этом примере показано, как проектировать lowpass. В примере описываются некоторые из наиболее часто используемых инструментов командной строки в DSP System Toolbox™. Также можно использовать приложение Filter Builder для реализации всех представленных здесь проектов. Для получения дополнительного проекта опций см. Раздел «Разработка низкочастотных конечных импульсных характеристик фильтров»

Введение

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

Конечная импульсная характеристика Lowpass Designs - Определение порядка фильтрации

Существует много практических ситуаций, в которых вы должны задать порядок фильтра. Одним из таких случаев является, если вы нацелены на оборудование, которое ограничило порядок фильтра определенным числом. Другой распространенный сценарий, когда вы вычислили доступный вычислительный бюджет (MIPS) для вашей реализации, и это обеспечивает вам ограниченный порядок фильтра. Конечная импульсная характеристика проекта функции в Наборе инструментов обработки сигналов (включая fir1, firpm, и firls) все способны к разработке lowpass фильтров с заданным порядком. В DSP System Toolbox предпочтительная функция для создание фильтра конечной импульсной характеристики с заданным порядком firceqrip. Эта функция проектирует оптимальные lowpass/highpass конечная импульсная характеристика с заданными значениями пульсации полосы пропускания/полосы упора и с заданной частотой края полосы пропускания. Частота ребра стоповой полосы определяется в результате проекта.

Проектируйте lowpass конечная импульсная характеристика для данных, отобранных с частотой дискретизации 48 кГц. Ширина полосы пропускания составляет 8 кГц. Значение неравномерности в полосе пропускания составляет 0,01 дБ, а затухание в полосе задерживания составляет 80 дБ. Ограничьте порядок фильтра 120.

N   = 120;
Fs  = 48e3;
Fp  = 8e3;
Ap  = 0.01;
Ast = 80;

Получите максимальное отклонение для полосы пропускания и пульсации упора в линейных модулях.

Rp  = (10^(Ap/20) - 1)/(10^(Ap/20) + 1);
Rst = 10^(-Ast/20);

Проектируйте фильтр с помощью firceqrip и посмотрим частотную характеристику величины.

NUM = firceqrip(N,Fp/(Fs/2),[Rp Rst],'passedge');
fvtool(NUM,'Fs',Fs)

Получившаяся частота ребра стоповой полосы составляет около 9,64 кГц.

Проекты минимального порядка

Другим проектом для оптимальных фильтров равновесия является firgr. firgr может спроектировать фильтр, который удовлетворяет ограничениям пульсации полосы пропускания/упора, а также заданной ширине перехода с наименьшим возможным порядком фильтра. Для примера, если частота ребра стоповой полосы задана как 10 кГц, полученный фильтр имеет порядок 100, а не фильтр 120-го порядка, разработанный с firceqrip. Меньший порядок фильтра является результатом большей полосы переходов.

Задайте частоту ребра стоповой полосы 10 кГц. Получите конечную импульсную характеристику фильтр минимального порядка с неравномерностью в полосе пропускания 0,01 дБ и 80 дБ затухания в полосе задерживания.

Fst     = 10e3;
NumMin = firgr('minorder',[0 Fp/(Fs/2) Fst/(Fs/2) 1], [1 1 0 0],[Rp,Rst]);

Постройте график величины частотных характеристик для фильтра конечной импульсной характеристики минимального порядка, полученного с помощью firgr и фильтр 120-го порядка, разработанный с firceqrip. Проект минимального порядка приводит к установке фильтра с порядком 100. Переходная область фильтра 120-го порядка, как ожидалось, уже, чем у фильтра с порядком 100.

hvft = fvtool(NUM,1,NumMin,1,'Fs',Fs);
legend(hvft,'N = 120','N = 100')

Фильтрация данных

Чтобы применить фильтр к данным, можно использовать filter Команда или можно использовать dsp.FIRFilter. dsp.FIRFilter имеет преимущество управления состоянием при выполнении в цикле. dsp.FIRFilter также имеет возможности фиксированной точки и поддерживает генерацию кода C, генерацию HDL-кода и оптимизированную генерацию кода для ARM ® Cortex ® M и ARM Cortex A.

Фильтруйте 10 секунд белого шума с нулевым средним и единичным стандартным отклонением в кадрах 256 отсчетов с помощью КИХ-lowpass-фильтра 120-го порядка. Просмотр результатов на анализаторе спектра.

LP_FIR = dsp.FIRFilter('Numerator',NUM);
SA     = dsp.SpectrumAnalyzer('SampleRate',Fs,'SpectralAverages',5);
tic
while toc < 10
    x = randn(256,1);
    y = LP_FIR(x);
    step(SA,y);
end

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

dsp.LowpassFilter является альтернативой использованию firceqrip и firgr в сочетании с dsp.FIRFilter. В основном, dsp.LowpassFilter конденсирует двухэтапный процесс в один. dsp.LowpassFilter обеспечивает те же преимущества, что и dsp.FIRFilter обеспечивает поддержку с фиксированной точкой, поддержку генерации кода C, поддержку генерации HDL-кода и поддержку генерации кода ARM Cortex.

Проектируйте lowpass конечная импульсная характеристика для данных, отобранных с частотой дискретизации 48 кГц. Ширина полосы пропускания составляет 8 кГц. Значение неравномерности в полосе пропускания составляет 0,01 дБ, а затухание в полосе задерживания составляет 80 дБ. Ограничьте порядок фильтра 120. Создайте dsp.FIRFilter на основе ваших спецификаций.

LP_FIR = dsp.LowpassFilter('SampleRate',Fs,...
    'DesignForMinimumOrder',false,'FilterOrder',N,...
    'PassbandFrequency',Fp,'PassbandRipple',Ap,'StopbandAttenuation',Ast);

Коэффициенты в LP_FIR идентичны коэффициентам в NUM.

NUM_LP = tf(LP_FIR);

Можно использовать LP_FIR для непосредственной фильтрации данных, как показано в предыдущем примере. Можно также проанализировать фильтр с помощью FVTool или измерить ответ с помощью measure.

fvtool(LP_FIR,'Fs',Fs);
measure(LP_FIR)
ans = 

Sample Rate      : 48 kHz    
Passband Edge    : 8 kHz     
3-dB Point       : 8.5843 kHz
6-dB Point       : 8.7553 kHz
Stopband Edge    : 9.64 kHz  
Passband Ripple  : 0.01 dB   
Stopband Atten.  : 79.9981 dB
Transition Width : 1.64 kHz  
 

Проекты минимального порядка с dsp. LowpassFilter

Можно использовать dsp.LowpassFilter для разработки фильтров минимального порядка и использования measure чтобы убедиться, что проект соответствует предписанным спецификациям. Порядок фильтра снова равен 100.

LP_FIR_minOrd = dsp.LowpassFilter('SampleRate',Fs,...
    'DesignForMinimumOrder',true,'PassbandFrequency',Fp,...
    'StopbandFrequency',Fst,'PassbandRipple',Ap,'StopbandAttenuation',Ast);
measure(LP_FIR_minOrd)
Nlp = order(LP_FIR_minOrd)
ans = 

Sample Rate      : 48 kHz      
Passband Edge    : 8 kHz       
3-dB Point       : 8.7136 kHz  
6-dB Point       : 8.922 kHz   
Stopband Edge    : 10 kHz      
Passband Ripple  : 0.0098641 dB
Stopband Atten.  : 80.122 dB   
Transition Width : 2 kHz       
 

Nlp =

   100

Разработка БИХ

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

Создайте эллиптический фильтр с той же частотой дискретизации, частотой отсечения, неравномерности в полосе пропускания ограничением и затуханием в полосе задерживания, что и конечной импульсной характеристикой фильтр 120-го порядка. Уменьшите порядок фильтра для эллиптического фильтра до 10.

N = 10;
LP_IIR = dsp.LowpassFilter('SampleRate',Fs,'FilterType','IIR',...
    'DesignForMinimumOrder',false,'FilterOrder',N,...
    'PassbandFrequency',Fp,'PassbandRipple',Ap,'StopbandAttenuation',Ast);

Сравните проекты конечной импульсной характеристики и БИХ. Вычислите стоимость двух реализаций.

hfvt = fvtool(LP_FIR,LP_IIR,'Fs',Fs);
legend(hfvt,'FIR Equiripple, N = 120', 'IIR Elliptic, N = 10');
cost_FIR = cost(LP_FIR)
cost_IIR = cost(LP_IIR)
cost_FIR = 

  struct with fields:

                  NumCoefficients: 121
                        NumStates: 120
    MultiplicationsPerInputSample: 121
          AdditionsPerInputSample: 120


cost_IIR = 

  struct with fields:

                  NumCoefficients: 25
                        NumStates: 20
    MultiplicationsPerInputSample: 25
          AdditionsPerInputSample: 20

Фильтры конечной импульсной характеристики и БИХ имеют сходные величины отклики. Стоимость БИХ составляет около 1/6 стоимости конечной импульсной характеристики.

Выполнение БИХ

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

Фильтруйте 10 секунд белого Гауссова шума с нулевым средним и единичным стандартным отклонением в системах координат 256 выборки с помощью lowpass 10-го порядка. Просмотр результатов на анализаторе спектра.

SA = dsp.SpectrumAnalyzer('SampleRate',Fs,'SpectralAverages',5);
tic
while toc < 10
    x = randn(256,1);
    y = LP_IIR(x);
    SA(y);
end

Фильтры переменной конечной импульсной характеристики и БИХ полосы пропускания

Можно также проектировать фильтры, которые позволяют изменять частоту отключения во время выполнения. dsp.VariableBandwidthFIRFilter и dsp.VariableBandwidthIIRFilter может использоваться в таких случаях.

Похожие темы