exponenta event banner

Специальные темы проектирования фильтров IIR

Классическая конструкция фильтра IIR

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

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

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

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

Панель инструментов содержит функции для каждого из этих шагов.

Задача проектирования

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

Аналоговый прототип нижних частот

buttap, cheb1ap, besselap, ellipap, cheb2ap

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

lp2lp, lp2hp, lp2bp, lp2bs

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

bilinear, impinvar

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

Проект аналогового прототипа

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

В таблице ниже представлены функции проектирования аналоговых прототипов для каждого поддерживаемого типа фильтров. графики для каждого типа показаны в IIR Filter Design.

Тип фильтра

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

Бесселевый

[z,p,k] = besselap(n)

Баттерворт

[z,p,k] = buttap(n)

Чебышёв I типа

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

Чебышёв II типа

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

Овальный

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

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

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

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

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

От нижних до нижних частот

s′=s/ω0

[numt,dent]   = lp2lp (num,den,Wo)

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

От нижних до верхних частот

s′=ω0s

[numt,dent]   = lp2hp (num,den,Wo)

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

От нижних частот к полосам пропускания

s′=ω0Bω (s/ü 0) 2 + 1s/start0

[numt,dent]   = lp2bp (num,den,Wo,Bw)

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

От нижних частот к полосам пропускания

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

[numt,dent]   = lp2bs (num,den,Wo,Bw)

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

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

ω0=ω1ω2

и

Бом =

где λ 1 - нижняя кромка полосы, а start2 - верхняя кромка полосы.

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

Для начала проектирования полосового фильтра Чебышева типа I порядка 10 со значением 3 дБ для пульсации полосы пропускания введите

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

Продукция z, p, и k содержат нули, полюса и коэффициент усиления низкочастотного аналогового фильтра с частотой отсечки, равной 1 рад/с. Используйте функцию для преобразования этого прототипа нижних частот в полосовой аналоговый фильтр с полосовыми краями Ω1 = λ/5 и Ω2 = λ. Сначала преобразуйте фильтр в форму state-space, чтобы 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 (num,den,fs)

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

[zd,pd,kd] = bilinear (z,p,k,fs,Fp)

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

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

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

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

Спроектируйте фильтр типа I Чебышева и постройте график его частотной и фазовой характеристики с использованием FVTool:

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

Нажмите кнопку панели инструментов «Величина и фазовый отклик».

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

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

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

H (z) = H (s) | s = kz − 1z + 1

Билинейное преобразование отображает ось jΛ непрерывной области в единичную окружность дискретной области в соответствии с

λ = 2тан 1 (Λ k)

Функция панели инструментов bilinear реализует эту операцию, где константа искажения частоты k равна удвоенной частоте дискретизации (2*fs) по умолчанию и равно 2ífp/tan (øfp/fs), если вы даетеbilinear конечный аргумент, который представляет частоту «совпадения» Fp. При совпадении частоты Fp (в герцах) присутствует, bilinear отображает частоту Λ = 2xeonfp (в рад/с) на ту же частоту в дискретной области, нормированную к частоте дискретизации: λ = 2xeonfp/fs (в рад/выборке).

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

Нажмите кнопку панели инструментов «Величина и фазовый отклик».

Нижний край полосы находится на частоте 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');

Следует отметить, что границы полосы находятся в рад/с для аналоговых фильтров, тогда как для цифрового случая частота нормируется:

[bz,az] = cheby1(5,3,[0.1 0.5]);

Все функции проектирования вызывают bilinear внутренне. Они подготавливают края полосы по мере необходимости для получения правильного цифрового фильтра.