Классический БИХ-метод создания фильтра включает следующие шаги.
Найдите аналоговый фильтр lowpass с частотой среза 1 и переведите этот прототипный фильтр в заданную настройку полосы
Преобразуйте фильтр к цифровой области.
Дискретизируйте фильтр.
Тулбокс обеспечивает функции для каждого из этих шагов.
Спроектируйте задачу | Доступные функции |
---|---|
Аналоговый прототип lowpass | |
Преобразование частоты | |
Дискретизация |
В качестве альтернативы butter
, cheby1
, cheb2ord
, ellip
, и besself
функции выполняют все шаги создания фильтра и buttord
, cheb1ord
, cheb2ord
, и ellipord
функции обеспечивают расчет минимального порядка для БИХ-фильтров. Эти функции достаточны для многих проблем проектирования, и более низкие функции уровня обычно не нужны. Но если у вас действительно есть приложение, где необходимо преобразовать ребра полосы аналогового фильтра, или дискретизировать рациональную передаточную функцию, этот раздел описывает инструменты, с которыми можно сделать так.
Этот тулбокс обеспечивает много функций, чтобы создать аналоговые прототипные фильтры lowpass с частотой среза 1, первый шаг в классическом подходе к БИХ-созданию фильтра.
Приведенная ниже таблица обобщает аналоговые прототипные функции проекта для каждого поддерживаемого типа фильтра; графики для каждого типа показывают в БИХ-Создании фильтра.
Второй шаг в аналоговом методе проектирования прототипирования является преобразованием частоты прототипа lowpass. Тулбокс обеспечивает набор функций, чтобы преобразовать аналоговые прототипы lowpass (с частотой среза 1 рад/с) в полосу пропускания, highpass, bandstop, и фильтры lowpass с заданной частотой среза.
Преобразование частоты | Функция преобразования |
---|---|
Lowpass к lowpass |
|
Lowpass к highpass |
|
Lowpass к полосе пропускания |
|
Lowpass к bandstop |
|
Как показано все функции преобразования частоты могут принять две модели линейной системы: передаточная функция и форма пространства состояний. Для полосы пропускания и bandstop случаев
и
где ω1 является ребром нижней полосы, и ω2 является ребром верхней полосы.
Функции преобразования частоты выполняют подстановку переменных частоты. В случае lp2bp
и lp2bs
, это - замена второго порядка, таким образом, выходной фильтр является дважды порядком входа. Для lp2lp
и lp2hp
, выходной фильтр является тем же порядком как вход.
Чтобы начать проектировать фильтр Чебышевский Тип 1 полосы пропускания порядка 10 со значением 3 дБ для неравномерности в полосе пропускания, войти
[z,p,k] = cheb1ap(10,3);
Выходные параметры z
P
, и k
содержите нули, полюса и усиление аналогового фильтра lowpass с частотой среза Ωc равный 1 рад/с. Используйте функцию, чтобы преобразовать этот прототип lowpass к полосовому аналоговому фильтру с ребрами полосы Ω1 = π/5 и Ω2 = π. Во-первых, преобразуйте фильтр в форму пространства состояний так lp2bp
функция может принять его:
[A,B,C,D] = zp2ss(z,p,k); % Convert to state-space form.
Теперь найдите пропускную способность и центральную частоту, и вызовите lp2bp
:
u1 = 0.1*2*pi;
u2 = 0.5*2*pi; % In radians per second
Bw = u2-u1;
Wo = sqrt(u1*u2);
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
Наконец, вычислите частотную характеристику и постройте ее величину:
[b,a] = ss2tf(At,Bt,Ct,Dt); % Convert to TF form w = linspace(0.01,1,500)*2*pi; % Generate frequency vector h = freqs(b,a,w); % Compute frequency response semilogy(w/2/pi,abs(h)) % Plot log magnitude vs. freq xlabel('Frequency (Hz)') grid
Третий шаг в аналоговом методе прототипирования является преобразованием фильтра к области дискретного времени. Тулбокс предоставляет два метода для этого: импульс инвариантные и билинейные преобразования. Функции создания фильтра butter
, cheby1
, cheby2
, и ellip
используйте билинейное преобразование для дискретизации на этом шаге.
Аналого-цифровое преобразование | Функция преобразования |
---|---|
Импульсная инвариантность |
|
Билинейное преобразование |
|
Функция тулбокса impinvar
создает цифровой фильтр, импульсная характеристика которого является выборками непрерывной импульсной характеристики аналогового фильтра. Эта функция работает только над, просачивается форма передаточной функции. Для лучших результатов аналоговый фильтр должен иметь незначительное содержимое частоты выше половины частоты дискретизации, потому что такое высокочастотное содержимое искажается в нижние полосы после выборки. Импульсная инвариантность работает на некоторый lowpass и полосовые фильтры, но не подходит для highpass и заграждающих фильтров.
Спроектируйте фильтр Чебышевский Тип 1 и постройте его частоту и фазовый отклик с помощью FVTool:
[bz,az] = impinvar(b,a,2); fvtool(bz,az)
Нажмите кнопку на панели инструментов Magnitude and Phase Response.
Импульсная инвариантность сохраняет частоты среза 0,1 Гц и 0,5 Гц.
Билинейное преобразование является нелинейным отображением непрерывной области к дискретной области; это сопоставляет s - плоскость в z - плоскость
Билинейное преобразование сопоставляет the jΩ-axis непрерывной области к модульному кругу дискретной области согласно
Функция тулбокса bilinear
реализации эта операция, где частота, деформирующая постоянный k, равна дважды частоте дискретизации (2*fs
) по умолчанию, и равный если вы даете bilinear
запаздывающий аргумент, который представляет частоту “соответствия” Fp
. Если частота соответствия Fp
(в герц), присутствует, bilinear
сопоставляет частоту Ω = 2πfp (в rad/s) к той же частоте в дискретной области, нормированной к частоте дискретизации: ω = 2πfp/fs (в рад/отсчете).
bilinear
функция может выполнить это преобразование на трех различных представлениях линейной системы: нули, полюса и усиление, передаточная функция и форма пространства состояний. Попытайтесь вызвать bilinear
с матрицами пространства состояний, которые описывают фильтр Чебышевский Тип 1 от предыдущего раздела, с помощью частоты дискретизации 2 Гц, и сохраняя ребро нижней полосы 0,1 Гц:
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,2,0.1);
Частотная характеристика получившегося цифрового фильтра
[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % Convert to TF
fvtool(bz,az)
Нажмите кнопку на панели инструментов Magnitude and Phase Response.
Ребро нижней полосы на уровне 0,1 Гц как ожидалось. Заметьте, однако, что ребро верхней полосы немного меньше 0,5 Гц, несмотря на то, что в аналоговой области это были точно 0,5 Гц. Это иллюстрирует нелинейную природу билинейного преобразования. Чтобы противодействовать этой нелинейности, необходимо создать аналоговые доменные фильтры с “предварительно деформированными” ребрами полосы, которые сопоставляют с правильными местоположениями после билинейного преобразования. Здесь предварительно деформированные частоты u1
и u2
сгенерируйте Bw
и Wo
для lp2bp
функция:
fs = 2; % Sampling frequency (hertz) u1 = 2*fs*tan(0.1*(2*pi/fs)/2); % Lower band edge (rad/s) u2 = 2*fs*tan(0.5*(2*pi/fs)/2); % Upper band edge (rad/s) Bw = u2 - u1; % Bandwidth Wo = sqrt(u1*u2); % Center frequency [At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
Цифровой полосовой фильтр с правильными ребрами полосы 0.1 и 0.5 раза частота Найквиста
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,fs);
Полосовые фильтры в качестве примера от последних двух разделов могли также быть созданы в одном операторе с помощью полной БИХ-функции проекта cheby1
. Например, аналоговая версия примера Чебышевский фильтр
[b,a] = cheby1(5,3,[0.1 0.5]*2*pi,'s');
Обратите внимание на то, что ребра полосы находятся в rad/s для аналоговых фильтров, тогда как для цифрового случая, частота нормирована:
[bz,az] = cheby1(5,3,[0.1 0.5]);
Все полные функции проекта вызывают bilinear
внутренне. Они предварительно деформируют ребра полосы по мере необходимости, чтобы получить правильный цифровой фильтр.