Специальные темы в БИХ-создании фильтра

Классическое БИХ-создание фильтра

Классический БИХ-метод создания фильтра включает следующие шаги.

  1. Найдите аналоговый фильтр lowpass с частотой среза 1 и переведите этот прототипный фильтр в заданную настройку полосы

  2. Преобразуйте фильтр к цифровой области.

  3. Дискретизируйте фильтр.

Тулбокс обеспечивает функции для каждого из этих шагов.

Спроектируйте задачу

Доступные функции

Аналоговый прототип lowpass

buttap, cheb1ap, besselap, ellipap, cheb2ap

Преобразование частоты

lp2lp, lp2hp, lp2bp, lp2bs

Дискретизация

bilinear, impinvar

В качестве альтернативы butter, cheby1, cheb2ord, ellip, и besself функции выполняют все шаги создания фильтра и buttord, cheb1ord, cheb2ord, и ellipord функции обеспечивают расчет минимального порядка для БИХ-фильтров. Эти функции достаточны для многих проблем проектирования, и более низкие функции уровня обычно не нужны. Но если у вас действительно есть приложение, где необходимо преобразовать ребра полосы аналогового фильтра, или дискретизировать рациональную передаточную функцию, этот раздел описывает инструменты, с которыми можно сделать так.

Аналоговый прототипный проект

Этот тулбокс обеспечивает много функций, чтобы создать аналоговые прототипные фильтры lowpass с частотой среза 1, первый шаг в классическом подходе к БИХ-созданию фильтра.

Приведенная ниже таблица обобщает аналоговые прототипные функции проекта для каждого поддерживаемого типа фильтра; графики для каждого типа показывают в БИХ-Создании фильтра.

Отфильтруйте тип

Аналоговая прототипная функция

Функция Бесселя

[z, p, k] = besselapN

Баттерворт

[z, p, k] = buttapN

Чебышевский тип I

[z, p, k] = cheb1ap(n, Rp)

Чебышевский тип II

[z, p, k] = cheb2ap(n, RS)

Эллиптический

[z, p, k] = ellipap(n, Rp, RS)

Преобразование частоты

Второй шаг в аналоговом методе проектирования прототипирования является преобразованием частоты прототипа lowpass. Тулбокс обеспечивает набор функций, чтобы преобразовать аналоговые прототипы lowpass (с частотой среза 1 рад/с) в полосу пропускания, highpass, bandstop, и фильтры lowpass с заданной частотой среза.

Преобразование частоты

Функция преобразования

Lowpass к lowpass

s=s/ω0

[numt, вмятина]   = lp2lp (цифра, логово, Во)

  [At,Bt,Ct,Dt] = lp2lp (A,B,C,D,Wo)

Lowpass к highpass

s=ω0s

[numt, вмятина]   = lp2hp (цифра, логово, Во)

  [At,Bt,Ct,Dt] = lp2hp (A,B,C,D,Wo)

Lowpass к полосе пропускания

s=ω0Bω(s/ω0)2+1s/ω0

[numt, вмятина]   = lp2bp (цифра, логово, Во, Bw)

  [At,Bt,Ct,Dt] = lp2bp (A,B,C,D,Wo,Bw)

Lowpass к bandstop

s=Bωω0s/ω0(s/ω0)2+1

[numt, вмятина]   = lp2bs (цифра, логово, Во, Bw)

  [At,Bt,Ct,Dt] = lp2bs( A,B,C,D,Wo,Bw)

Как показано все функции преобразования частоты могут принять две модели линейной системы: передаточная функция и форма пространства состояний. Для полосы пропускания и bandstop случаев

ω0=ω1ω2

и

Bω=ω2ω1

где ω1 является ребром нижней полосы, и ω2 является ребром верхней полосы.

Функции преобразования частоты выполняют подстановку переменных частоты. В случае lp2bp и lp2bs, это - замена второго порядка, таким образом, выходной фильтр является дважды порядком входа. Для lp2lp и lp2hp, выходной фильтр является тем же порядком как вход.

Чтобы начать проектировать фильтр Чебышевский Тип 1 полосы пропускания порядка 10 со значением 3 дБ для неравномерности в полосе пропускания, войти

[z,p,k] = cheb1ap(10,3);

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

Аналого-цифровое преобразование

Функция преобразования

Импульсная инвариантность

[numd, dend] = impinvar (цифра, логово, фс)

Билинейное преобразование

[zd, фунт, kd] = bilinear (z, p, k, фс, Fp)

  [numd,dend] = bilinear (num,den,fs,Fp)

  [Ad,Bd,Cd,Dd] = bilinear (At,Bt,Ct,Dt,fs,Fp)

Импульсная инвариантность

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

Спроектируйте фильтр Чебышевский Тип 1 и постройте его частоту и фазовый отклик с помощью FVTool:

[bz,az] = impinvar(b,a,2);
fvtool(bz,az)

Нажмите кнопку на панели инструментов Magnitude and Phase Response.

Импульсная инвариантность сохраняет частоты среза 0,1 Гц и 0,5 Гц.

Билинейное преобразование

Билинейное преобразование является нелинейным отображением непрерывной области к дискретной области; это сопоставляет s - плоскость в z - плоскость

H(z)=H(s)|s=kz1z+1

Билинейное преобразование сопоставляет the jΩ-axis непрерывной области к модульному кругу дискретной области согласно

ω=2tan1(Ωk)

Функция тулбокса bilinear реализации эта операция, где частота, деформирующая постоянный k, равна дважды частоте дискретизации (2*fs) по умолчанию, и равный 2πfp/tan(πfp/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 внутренне. Они предварительно деформируют ребра полосы по мере необходимости, чтобы получить правильный цифровой фильтр.