[an error occurred while processing this directive]
Фильтр Баттерворта наверное везде есть.
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено -=ВН=- 05 июля 2005 г. 03:02
В ответ на: Фильтр Батерворта отправлено <font color=gray>velik</font> 04 июля 2005 г. 20:30

Но все-таки. Была в свое время неплохая книга. Все данные по памяти, могу ошибиться. Лэм. Аналоговые и цифровые фильтры. Издательство Мир. Свое время - 70-е или 80-е годы. Точнее не скажу.
И вот краткая справка по фильтрам Баттерворта. ФНЧ. Аналоговым.
Квадрат модуля АЧХ A(W)^2=1/(1+W^2N). W=2PI*F/2PI*F05 - нормированная частота. F0707- ширина полосы пропускания по уровню 0.5 (квадрат модуля), т.е. ширина 3-х децибельной полосы. N - порядок фильтра.
Из выражения для квадрата модуля легко определите порядок для заданного подавления на заданной частоте.
Это квадрат модуля АЧХ.
От него формально (и не очень) легко перейти к квадрату ПЕРЕДАТОЧНОЙ функции. H(S)^2=1/(1+S^2N). S - переменная Лапласа, нормированная на 2PI*F05. S=(D+j*2PI*F)/2PI*F05. D - в книжках обычно сигма пишут, а не D. Параметр, характеризующий затухание.
Из этого выражения легко понять, где же находятся полюса фильтра Баттерворта. Решив уравнение: S^2N+1=0. S^2N=-1. А -1=exp(jPI).
Таким образом S^2N=exp(jPI). И полюса нормированного аналогового ФНЧ Баттерворта лежат в S плоскости на единичной окружности, с центром в начале координат.
Речь шла о квадрате модуля передаточной фуннкции.
У нее полюсов во-первых в 2 раза больше чем у самой передаточной функции, а во-вторых половина из них находится в правой полуплоскости S плоскости. Т.е. квадрат модуля передаточной ф-ии имеет 2N полюсов, лежат они на окружности, из них N находятся в правой полуплоскости, N - в левой. Полюса в правой полуплоскости имееют D больше 0, в левой - меньше 0.
Чтобы получить выражение для передаточной ф-ии, нужно из всех 2N полюсов квадрата модуля оставить только полюса из левой полуплоскости. Иначе фильтр неустойчивым будет.
Ну и после нахождения полюсов передаточная ф-ия:
H(S)=П(1/S-S[k]) П - произведение, по k. k - номер полюса. От 0 до N-1.
Чтобы цифровой фильтр получить - билинейное преобразование.

Ну и напоследок - кусок моей программки, считающей полюса фильтра Баттерворта. В ней: order - порядок фильтра (N), apolere,apoleim - указатели на массивы действительных и мнимых частей полюсов.



#include <math.h>
void batterworth(int order,double *apolere,double *apoleim)
{
int i,k,l;
double x,y,z,fi;
l=0;
k=order/2;
z=(double)(order*2);
if((order&1))
{
l=1;
k=(order-1)/2;
apolere[0]=-1.;
apoleim[0]=0.;
}
for(i=0;i<k;i++)
{
x=(double)(2*i+1);
fi=x*PI/z;
y=-sin(fi);
apolere[2*i+l]=y;
apolere[2*i+l+1]=y;
y=cos(fi);
if(y>0.)
{
apoleim[2*i+l]=y;
apoleim[2*i+l+1]=-y;
}
else
{
apoleim[2*i+l]=-y;
apoleim[2*i+l+1]=y;
}
}
}





Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru