ФНЧ Баттерворта

Все что касается фильтрации
Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: ФНЧ Баттерворта

Сообщение Rem »

Изменил генерацию с учётом коэффициента для уменьшения амплитуды.
объявление - void SinGen( float freq, float ampl, int bufersize, int samplrate, float * sin_array);
вызов - SinGen(FreqArr, 0.9, BUFER_SIZE, SAMPLE_RATE, sin_array);
расчёт семпла - sin_array= ampl* sin ((i+random) * 2 * M_PI *freq / samplrate);
Интересно, что у низких частот амплитуда после фильтра становится больше.
Еще подскажите коэффициенты для среза на 660 Гц.
Вложения
2015-02-26 06 36 47.png

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: ФНЧ Баттерворта

Сообщение Santik »

Попробуйте к Сергею Бахурину обратиться в личку. С просьбой выслать filter.exe Раньше эта программа висела на сайте в свободном доступе...
Или найдите другую программу для расчёта коэффициентов фильтра - таких программ много!

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: ФНЧ Баттерворта

Сообщение Santik »

Ampl советую не константой сделать. Желательно, чтобы амплитуда плавно повышалась в начале сигнала и плавно спадала в конце.
И ещё, я уже говорил, sin ((i+random) * 2 * M_PI *freq / samplrate); - это как-то не очень красиво выглядит :D

Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: ФНЧ Баттерворта

Сообщение Rem »

Я надеюсь это последнее моё соприкосновение с темой фильтров. Поэтому программу всю не надо, надо до диапазона заданий, 660Гц. Можно такой же скриншот попросить?

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: ФНЧ Баттерворта

Сообщение Santik »

Rem писал(а):Ух как хорошо получилось :)
Единственный вопрос. В итоговом массиве Y первые два значения присвоил нулю. Правильно сделал?
Да.
Надо не забывать, что в общем случае итоговый массив должен иметь размерность buffersize+"порядок фильтра".
Если фильтрация происходит не в реальном времени, то всегда можно выходной массив сдвинуть
for ( i=0; i<bufersize ; i++){
Y1=Y[i+"порядок фильтра"]
}

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: ФНЧ Баттерворта

Сообщение Santik »

Rem писал(а):Я надеюсь это последнее моё соприкосновение с темой фильтров. Поэтому программу всю не надо, надо до диапазона заданий, 660Гц. Можно такой же скриншот попросить?
Да без проблем. Только частота нужна относительная Fs/FN, где FN - частота Найквиста.

Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: ФНЧ Баттерворта

Сообщение Rem »

Ч.среза 660 / Ч.Найквиста 22050 = 0.03 ( уточнённая частота среза 661.5)

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: ФНЧ Баттерворта

Сообщение Santik »

Коэффициенты b:
7.744755801413687800e-014
7.744755801413688800e-013
3.485140110636159600e-012
9.293706961696426200e-012
1.626398718296874700e-011
1.951678461956249500e-011
1.626398718296874700e-011
9.293706961696426200e-012
3.485140110636159600e-012
7.744755801413688800e-013
7.744755801413687800e-014

Коэффициенты a:
1.000000000000000000e+000
-9.355502734921367700e+000
3.940608498045521900e+001
-9.840743727783855400e+001
1.613503924899139600e+002
-1.814928563902834100e+002
1.418361576498764400e+002
-7.604213695631484900e+001
2.676604354547086100e+001
-5.585474088628570800e+000
5.247287823496200600e-001
Баттерворт 10 порядка.JPG

Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: ФНЧ Баттерворта

Сообщение Rem »

Ой... что так много.. 10 степени? Нет, дайте пожалуйста второй степени, как раньше. (можно только скриншот) Расчеты будут в реальном времени.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: ФНЧ Баттерворта

Сообщение Santik »

Коэффициенты b:
3.980974416962729900e-003
7.961948833925459900e-003
3.980974416962729900e-003

Коэффициенты a:
1.000000000000000000e+000
-1.813756244168086800e+000
8.296801418359376300e-001

Ответить