|
|
  |
Цифровой полосовой фильтр, Реализация |
|
|
|
Jun 28 2007, 12:47
|
Местный
  
Группа: Новичок
Сообщений: 210
Регистрация: 3-11-06
Пользователь №: 21 936

|
Цитата(DRUID3 @ Jun 28 2007, 16:39)  Оу-у-у... Да у нас тут теоретики завелись...  Ну ничего, еще пару лет посидите над практикой и поймете зачем при применении окна - оверсемплинг... Вобщем ответ такой же, как и на первую реплику... P.S.: вот за это я и ненавижу Матлаб...  Ясно. Сказать, зачем нужен оверсамленг при применении окна, и как он уничтожает влияния окна на сигнал, Вы не можете. Аналогично и с мифическими преимуществми (кроме вычислительных) алгоритма Герцеля. Этого собственно следовало ожидать. Ваша ссылка на 2-х годичную практику выжала у меня слезу. Скупую мужскую слезу. Я плачу, мой друг. Я плачу.
|
|
|
|
|
Jul 1 2007, 07:05
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(e-tarasov @ Jun 27 2007, 14:21)  Задача такова. Требуется реализовать цифровой полосовой фильтр на 2000Гц с полосой 10Гц и максимально высоким затуханием и что интересно нужна фаза сигнала (но про это потом). Проц не сигнальный процесс фильтрации необязательно непрерывный. Раньше ЦОС не занимался на считая простеньких ФНЧ 2-го порядка. Надыбал алгоритм БПФ. Алгоритм БПФ позволяет использовать целочисленную математику что хорошо и при этом выделяет фазу сигнала. Господа специалисты а может это то что мне надо. Если да то может быть тогда для одной частоты есть упрощение алгоритма. Не подскажите заодно сколько отсчетов надо выбрать и какую частоту дискретизации. Плз. Фазу то я по любому думаю вытащу. Но с обычным фильтром траблы с непрерывной фильтрацией или с переходными процессами после подключения. Может кто уже нечто подобное реализовывал. Спасибо. одночастное ДПФ Вам мало поможет, точнее никак не поможет. Сделайте FIR с децимацией. Т.е примерно так: Частота дискретизации скажем 6000 Гц, синтезируете полосовой fir на 2000Гц с полосой 10Гц с требуемым затуханием(он получится весьма длинный но это ничего  ) . Выход фильтра децимируете в 100 раз и получаете ваш сигнал снесенный на частоту rem( 2000, 6010/100)=20 Гц и какбы оцифрованный с частотой 60 Гц . Выход фильтра нужно рассчитывать один раз на 100 входных отсчетов в этом и есть экономия  .
--------------------
ну не художники мы...
|
|
|
|
|
Jul 2 2007, 06:10
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(el34 @ Jul 1 2007, 12:41)  alex_os>Сделайте FIR с децимацией. Т.е примерно так: Частота дискретизации скажем 6000 Гц, синтезируете полосовой fir на 2000Гц с полосой 10Гц с требуемым затуханием(он получится весьма длинный но это ничего
более эффективным тогда уж будет комплексное гетеродинирование (2KHz) с последующей многоступенчатой децимацией - это выгоднее , чем один длинный полосовой фильтр..... имхо Почему Вы думаете , что многоступенчатая децимация будет эффективнее? Ну разве что памяти может меньше потребуется...
--------------------
ну не художники мы...
|
|
|
|
|
Jul 2 2007, 10:26
|
Участник

Группа: Свой
Сообщений: 44
Регистрация: 30-05-06
Пользователь №: 17 578

|
Не знаю пока что такое алгоритм Герцеля и в чем его суть так что пока склоняюсь все таки к ДПФ так как он дает сразу и амплитуду и фазу сигнала. А в чем суть комплексного гетеродина на пальцах можно объяснить? С обычным цифровым полосовым фильтром наверное придется отклонить так как его необходимо непрерывно крутить что достаточно накладно ударит по ресурсам проца. Ладно скоро придет комплектация будем пробывать. А вообще то пора в отпуск!!! Всем откликнувшимся спасибо.
|
|
|
|
|
Jul 3 2007, 05:02
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(el34 @ Jul 2 2007, 14:53)  потому, что тут надо выполнить две одинаковые (Re и Im) фнч фильтрации - фильтр получается проще и думаю точнее .... и при многоступенчатой децимации мы имеем и постепенное понижение частоты квантования и сл-но на входной,самой высокой, работает самый короткий фильтр и т.далее с понижением частоты длина фильтра увеличивается... Так у Вас получается два фильтра и следовательно затраты на него в двое больше по сравнения с вещественным полосовым фильтром. Далее рискну предположить что при заданном уровне наложений при децимации, длина FIR (L), пропорциональная требуемому коэф. децимации N, т.е. усреденные выч. затраты на fir дециматор будут: С =L/N=k*N/N = k, т.е. не зависят от коэф. децимации (имеется ввиду фир в общем виде не CIC, не halfband). зы: бесспорно самая не затратная структура при узколосной фильтрации-децимации это перенос на нулевую частоту и далее CIC + FIR.
--------------------
ну не художники мы...
|
|
|
|
|
Jul 7 2007, 09:09
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
мне необходимо было сделать полосовой БИХ-фильтр для 14КГц... в Матлабе получил коэффициенты из следующего [n14,Wn14]=cheb1ord(Wp14,Ws14,Rp,Rs); [b14,a14]=cheby1(n14,Rp,Wn14) ; Wp14=[12000 16000]/Fn; Ws14=[11000 17000]/Fn; Rp=1; Rs = 19; Fn=64000;
и в самом Матлабе на графиках видно, что всё фильтруется... потом была поставлена задача всё это повторить на С++.... прогу написал, но функция фильтрации не фильтрует как надо... я вбил коэффициенты в fdatool в Импорте фильтра и она мне показала совсем другой фильтр, а точнее ерунду какую-то.... програмка Ciirf1.0 выдала мне другие коэффициенты, но с ними тоже не работает... я думаю, что дело в формуле... видел я два варианта: разность полиномов (BiXi-AiYi) и деление полинома BiXi на AiYi .... причем разные источники меняют местами A и B... уже совсем запутался в этом... помогите разобраться...
|
|
|
|
|
Jul 8 2007, 17:18
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
а других источников нет?... в моей версии хелп какой-то урезанный...
|
|
|
|
|
Jul 20 2007, 14:25
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 4-02-07
Пользователь №: 25 046

|
я там нашел только в виде блок-схем, но в них не очень разбираюсь, и в формулу не перевел..
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|