Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ну вот рекурсивный 2-го порядка, он же биквад

Отправлено Глупый_пИнгвин 01 сентября 2008 г. 18:43
В ответ на: Хелп. Нужен цифровой фильтр: сишный исходник + расчет коэффициентов. отправлено <font color=gray>Tow</font> 01 сентября 2008 г. 11:51

Всё в плавучке, не успеет как пить дать, но как некоторая отправня точка сойдёт. Константы BW2_A и BW2_B - a и b для Баттерворта 2-го порядка.


#define PI 3.14159265358979
#define BW2_A 1.4142
#define BW2_B 1.0

float c0, c1, c2, d1, d2; /* coeffs */
float x1, x2, y1, y2; /* delay line */

void init_lowpass( float Fs, float f0, float a, float b )
{
float w = 1 / tan( PI * f0 / Fs );
float w2 = w*w;
flat den = 1 + a * w + b * w2;

c2 = c0 = 1 / den;
c1 = 2 / den;
d1 = -2 * ( 1 - b * w2 ) / den;
d2 = ( a * w - 1 - b * w2 ) / den;

x1 = x2 = y1 = y2 = 0.0
}

float do_biquad( float x0 )
{
float y0 = x0*c0 + x1*c1 + x2*c2 + d1*y1 + d2*y2;
x2 = x1;
x1 = x0;
y2 = y1;
y1 = y0;
return y0;
}





Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите двойку на единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru