148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
1

Реализация полосового фильтра Баттерворта 3 порядка

04.05.2015, 13:40. Показов 6110. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использование z-преобразования Ннч(S)--> Hпф(z) с получением соответствующей матрицы, позволяет значительно упростить алгоритм вычисления коэффициентов полосового фильтра.
Для примера привожу программу вычисления коэффициентов полосового фильтра Баттерворта 3 порядка:
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Subroutine BP_Butterworth_3(F0,Fs,Rp,A,B)
!F0- относительная центральная частота, Fs-относительная частота среза,Rp - неравномерность АЧХ (дБ)
!A,B - выходные массивы коэффициентов
 
real*8 F0,FN,Fs,Fd,Rp,Pi,Psi,Psi2,Omega_p,Ep,Alpha,Beta
real*8 b1,b2,b3,a0
real*8, dimension (7) :: A,B
 
Pi=3.141592653589793115997963469D+00
Omega_p=DTAN(Fs*0.5*Pi)
Ep=DSQRT(10.**(Rp*0.1)-1.)
Alpha=1.0/Ep**(1./3)
Beta=Alpha*Omega_p
FN=Fd*0.5
Psi=-2.*DCOS(F0*Pi)/DCOS(Fs*0.5*Pi)
b1=2.*Beta
b3=Beta*Beta
b2=2.*b3
b3=beta*b3
a0=1.0D00/(1.+b1+b2+b3)
A(1)=1.
A(2)=Psi*(3.+2.*b1+b2)*a0
Psi2=Psi*Psi
A(3)=a0*((Psi2+1.)*(3.+b1)-b2-3.*b3)
A(4)=a0*Psi*(Psi2+6.-2*b2)
A(5)=a0*((Psi2+1.)*(3.-b1)-b2+3.*b3)
A(6)=a0*Psi*(3.-2.*b1+b2)
A(7)=a0*(1.-b1+b2-b3)
B(1)=b3*a0
B(2)=0.
B(3)=-3.*B(1)
B(4)=0.
B(5)=-B(3)
B(6)=0.
B(7)=-B(1)
return 
end
Матрица соответствуещего z-преобразования приведена вРеализация ФНЧ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2015, 13:40
Ответы с готовыми решениями:

Расчет порядка нормированного прототипа ФНЧ при расчете полосового фильтра
Добрый день! После длительного перерыва опять занялся разработкой приложения на С++ для...

Алгоритм полосового фильтра Блэкмана
Добрый день! Основываясь на http://habrahabr.ru/post/128140/ и книге Эммануил Айфичер "Цифровая...

fdatool. Расчет полосового фильтра
нужно рассчитать полосовой фильтр. какая формула у полосового фильстра? y=f(x)

Расчет фильтра Баттерворта
Привет всем! Сколько не искал,не могу найти верный алгоритм расчета фильтра Баттерворта 4 порядка....

Реализация преобразования Гильберта с использованием КИХ-фильтра первого порядка
У меня такой вопрос, скажите можно ли реализовать преобразование Гильберта с помощью КИХ-фильтра...

12
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.05.2015, 15:28 2
...значительное упрощение предполагает избавление от готового фарша в виде вычисления корней квадратных и косинусов. Например, через таблицы или подбором через умножение для целочисленной арифметики.
0
148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
04.05.2015, 16:46  [ТС] 3
Такое мнение может принадлежать человеку, который в своей жизни ни одного коэффициента полосового фильтра не вычислял.
Согласен - проще брать готовые коэффициенты.
Но как тогда построить элементарный "следящий" фильтр?
Миниатюры
Реализация полосового фильтра Баттерворта 3 порядка  
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.05.2015, 17:14 4
A_Santik, не делайте далеко идущих выводов и не расписывайтесь за других. Вы пользуетесь математикой Фортрана, это мощный инструмент, спору нет как и в случае с Матлабом. Но для ЦОС актуальна реализация в железе, а это ПЛИС и МК. Нет там никаких Фортранов. Сразу видно в железе никогда не реализовывали ни одного фильтра.

p.s.: и мое имхо, будьте толератнее и воспринимайте критику адекватно.
0
148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
04.05.2015, 17:37  [ТС] 5
Классический алгоритм расчёта коэффициентов ФНЧ Баттерврота описан в Реализация ФНЧ Баттерворта
Но лично я эту программу не стал бы и пытаться в микроконтроллер "запихивать"!

Добавлено через 17 минут
А где Вы там увидели "мощную математику Фортрана"???
В приведенной программе практически только алгебраические формулы, которые "без напряга" переведутся на любой язык. Там даже циклов нет!!!
На microC Вам программу перевести, чтобы было понятней?
Да, меня удивляет "критика" от человека, который "не совсем в теме" вопроса. Призывы к "толерантности" явно излишни.
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.05.2015, 18:19 6
...ну да, ну да, а тангенсы, косинусы и корни квадратные святым духом конечно же вычисляются. Меня удивляет неадекватность топик-стартера, который завяз в математических пакетах и не видит дальше теории.
0
148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
06.05.2015, 22:45  [ТС] 7
Цитата Сообщение от A_Santik Посмотреть сообщение
Использование z-преобразования Ннч(S)--> Hпф(z) с получением соответствующей матрицы, позволяет значительно упростить алгоритм вычисления коэффициентов полосового фильтра.
Кроме того:
1. Матрица z-преобразования не зависит от типа фильтра!
Можно использовать коэффициенты Hфнч(S) фильтров Чебышева 1 и 2 рода, Кауэра, Бесселя и т.п.
2. Режекторный фильтр можно получить элементарными преобразованиями матрицы полосового фильтра (перестановкой столбцов).


"...уже есть онлайн-генератор готового Си-кода http://www-users.cs.york.ac.uk... /trad.html "

Но: генератор "генерит" рекурентрую формулу фильтра. Т.е. пригоден только для создания одного фильтра. Если понадобится изменить частоту фильтра нужно зайти на сайт , "сгенерить" новый код и "запихнуть" его в микроконтроллер.
Предлагается "генерить" коэффициенты прямо в микроконтроллере! И изменять частоту/полосу фильтра можно будет просто "кнопками" микроконтроллера (практически без ограничений).

Вот пример полосового фильтра Чебышева 2 рода:
Левая картинка - входной сигнал (белый шум)
Миниатюры
Реализация полосового фильтра Баттерворта 3 порядка  
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
19.05.2015, 14:22 8
Кнопками рулить много ума не надо. Возвращаемся к посту #2, т.е. реализации на практике следящего фильтра на простеньком МК без поддержки матпакетов
0
148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
19.05.2015, 15:04  [ТС] 9
Цитата Сообщение от raxp Посмотреть сообщение
...на простеньком МК без поддержки матпакетов
Я не очень понял, а что под "матпакетами" подразумевается?
Вычисление cos(x) ?
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
19.05.2015, 15:40 10
Такое впечатление, что автор темы читает между строк.
0
148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
20.05.2015, 10:20  [ТС] 11
Эксперимент. Вычисление коэффициентов полосового фильтра Баттерворта 3 порядка на ATmega8.
С Фортрана переписал на Си CodeVisionAVR. Особых трудностей не испытал, кроме как многочисленные замены () на [] в массивах. Но это я в "блокноте" заменил Использовал <math.h> В принципе, на этапе инициализации полосы вычисляется tg и cos, и ещё один раз cos при изменении центральной частоты.
Результаты:При частоте 8 МГц:
Инициализация полосы: 2 мс
Изменение центральной частоты: 1мс

Результаты меня не устраивают, поэтому сейчас бегу в ближайший ларёк за STM32
0
148 / 129 / 18
Регистрация: 29.04.2015
Сообщений: 626
04.06.2015, 11:51  [ТС] 12
Статья о простой методике расчёта КИХ фильтров
https://www.cyberforum.ru/post7988076.html
0
399 / 337 / 103
Регистрация: 27.05.2017
Сообщений: 1,892
17.12.2022, 12:40 13
Уважаемый A_Santik, попробовал реализовать в Excel ПФ 3 порядка, реализованный вами в этой статье, может, я не понимаю, как работают фильтры, но результат получился не тот, на который я рассчитывал.
На входе фильтра синусоидальный сигнал определенной частоты.
На выходе после фильтрации я ожидал такой же синусоидальный сигнал, но действительность оказалась другой.
Почему?
Миниатюры
Реализация полосового фильтра Баттерворта 3 порядка  
Вложения
Тип файла: xlsx Цифровой фильтр 3 тест.xlsx (162.1 Кб, 7 просмотров)
0
17.12.2022, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2022, 12:40
Помогаю со студенческими работами здесь

Реализация ФНЧ Баттерворта
есть ли у кого уже готовый код расчета фильтра?

Расчет полосового фильтра на базе ОУ
Найти: – величины элементов схемы для получения заданного коэффициента усиления K0, – нижнюю...

Рабочая схема полосового фильтра
Фильтр должен обрезать частоты ниже 20 герц и выше 500 Кгц. Расчеты сделал. Схему в протеусе...

Полосовой фильтр третьего порядка (Баттерворта) для звуковой частоты на пассивных элементах LC
Полосовой фильтр третьего порядка (Баттерворта) для звуковой частоты на пассивных элементах LC....

Проверка полосового фильтра
Здравствуйте! Никак не могу сдать защиту РГР одному требовательному преподу. Суть задания:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru