Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
DimKaKiber
11 / 11 / 0
Регистрация: 20.11.2013
Сообщений: 142
Завершенные тесты: 1
1

Расчет порядка нормированного прототипа ФНЧ при расчете полосового фильтра

18.08.2014, 11:59. Просмотров 1644. Ответов 1
Метки нет (Все метки)

Добрый день!
После длительного перерыва опять занялся разработкой приложения на С++ для проектирования цифровых фильтров.
В настоящее время пытаюсь реализовать расчет коэффициентов полосового фильтра Баттерворта.

Расчет буду вести с использованием преобразования ФНЧ-ПФ (http://www.dsplib.ru/content/filters/ch8/ch8.html).
Теория довольно простая. но возник один вопрос:

Как при проектировании аналогового прототипа ФНЧ, на основании которого будет расчитан ПФ найти новую частоту пропускания (для этого прототипа)? В Мурзилке (http://www.dsplib.ru/content/filters/ch8/ch8.html) в виде примера предлагается "с плеча" задать частоту пропускания == 1 рад/с и вести расчет дяльше не напрягаясь.

Меня смущает то, что при частоте дискретизации, например, == 10000 Гц (Шумоподавление == 30 Дб) при расчитанной частоте заграждения аналогового прототипа нормированного ФНЧ == 1,104 рад/с и при принятии частоты пропускания == 1 рад/с порядок фильтра == 1.

При этом, в Матлабе порядок полосового фильтра == 35.

Поэтому и возник вопрос - каким образом просчитать порядок полосового фильтра при его проектировании методами, реализованными в среде Матлаб???

Заранее спасибо за ответы.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 11:59
Ответы с готовыми решениями:

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

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

Реализация полосового фильтра Баттерворта 3 порядка
Использование z-преобразования Ннч(S)--> Hпф(z) с получением соответствующей матрицы, позволяет...

Применение высокочастотного фильтра при расчете скорости по показаниям акселерометра
Доброго времени суток, сразу попрошу прощения, в ЦОСе не силен, поэтому прошу сильно не ругаться. В...

1
DimKaKiber
11 / 11 / 0
Регистрация: 20.11.2013
Сообщений: 142
Завершенные тесты: 1
28.08.2014, 15:55  [ТС] 2
Опять отвлекли на другую работу

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

Все как в Мурзилке (http://www.dsplib.ru/content/filters/ch8/ch8.html) считается.

По таким параметрам фильтр считаю (ПФ IIR Баттерворта):

SampleRate == 10000 Hz
BP == 350 Hz
BS == 80 Hz
BP1 == 1200 Hz
BS1 == 1300 Hz

Подавление в частоте пропускания == 1 dB
Подавление в частоте заграждения == 30 dB

Пересчитываю частоту заграждения для нормированного прототипа ФНЧ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
double Calc_StopBandPass_Freq(long BP,long BS,long BP1,long BS1,long SampleRate) //Расчет частоты заграждения для расчета прототипа ФНЧ для ПФ.
{
 //Перевожу все частоты в радианы.
 double BandPass = Round((2*M_PI*BP)/(float)SampleRate,0.00001);
 double BandStop = Round((2*M_PI*BS)/(float)SampleRate,0.00001);
 double BandPass1 = Round((2*M_PI*BP1)/(float)SampleRate,0.00001);
 double BandStop1 = Round((2*M_PI*BS1)/(float)SampleRate,0.00001);
 //Расчитываю Wc^2.
 double Wc = Round(BandPass*BandPass1,0.00001);
 //Теперь ищу чему приравнять значение Wzx.
 double Wzx;
  Wzx = 0.0;
 if ((Wc/(float)BandStop1) > BandStop) Wzx = BandStop1;
  else Wzx = BandStop;
 //Теперь считаю частоту заграждения нормированного прототипа ФНЧ для расчитываемого ПФ.
 double W1 = Round(fabs(((BandPass*BandPass1)-pow(Wzx,2))/((BandPass1-BandPass)*Wzx)),0.00001);
 return W1;
}
Получаю такие частоты новые (все относительно моей частоты дискретизации (SampleRate)):
BP = 1591,55 Hz (1 рад/с)
BS = 1829,2 Hz (1,14932 рад/с)

Теперь считаю порядок нормированного прототипа ФНЧ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
long Butter_Grad(long SampleRate,long Rs,long Rp,long BP,long BS)//Расчет порядка фильтра Баттерворта
{
 long N;
 double EpsP = sqrt(pow(10,Rp/10.0)-1);
 double EpsS = sqrt(pow(10,Rs/10.0)-1);
 double OmegaP = 2*M_PI*BP/(float)SampleRate;
 double OmegaS = 2*M_PI*BS/(float)SampleRate;
 double L = log10(EpsS/EpsP)/log10(OmegaS/OmegaP);
  L *= 10;
      N = floor(L+0.5);
   N /= 10;
 return N;
}
Получаю, что порядок == 29. следовательно порядок полосового фильтра будет == 58

Тут мы с Матлабом немного разошлись (у него порядок фильтра == 56), но думаю, что если бы я округлял частоты, а не точно подставлял, то было бы все путем (но мне кажется, что чем точнее, тем лучше).

Вот как то так. Извините, что зря, похоже, новую тему на форуме создавал. Но если есть замечания - всегда готов выслушать, принять и правильно код написать
0
Миниатюры
Расчет порядка нормированного прототипа ФНЧ при расчете полосового фильтра  
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2014, 15:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проектирование полосового фильтра
Необходимо спроектировать полосовой фильтр с полосой пропускания 25-35 МГц.Ослабление в полосе...

Настройка полосового фильтра
Доброго времени суток. Возникла необходимость поставить полосовой фильтр(пропустить частоту 1100...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.