реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Перестраиваемый полосовой фильтр
РРоман
сообщение Mar 19 2008, 08:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Имеется следующая задача:
создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц).
Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как?
Можно ли для этого использовать ДПФ? Если да то как (в общих чертах).

Спасибо!
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Mar 19 2008, 09:23
Сообщение #2


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



ДПФ можно, но перестраиваться он будет только по сетке частот, ввиду блочности алгоритма, к тому же АЧХ будет формы sinc(f) если не применять окон. Лучше применить алгоритм Герцеля - эффективнее ДПФ, FIFO по своей сути, плавно может перестраиваться по диапазону...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Mar 19 2008, 10:46
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(РРоман @ Mar 19 2008, 11:57) *
Имеется следующая задача:
создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц).
Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как?
Можно ли для этого использовать ДПФ? Если да то как (в общих чертах).

Спасибо!


Делал я такю штуку. Фильтр Юзвинского здесь рулит. А если работать с комплексным сигналом, то полосовой фильтр легко превращается в ФНЧ, а центральная полоса пропускания - есть частота гетеродина.

Сообщение отредактировал Михаил_K - Mar 19 2008, 10:47
Go to the top of the page
 
+Quote Post
eugen_pcad_ru
сообщение Mar 20 2008, 05:50
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353



На мой взгляд проще использовать фильтр (смысла перехода в частотную область не вижу).
Лучше сделать комплексный ФНЧ с перестраиваемым гетеродином.
Остаются вопросы по: степени подавления, неравномерности в полосе и т.п. (обычные вопросы по фильтрации).


--------------------
Правильно сформулированый вопрос содержит в себе половину ответа.
P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Mar 20 2008, 07:07
Сообщение #5


Знающий
****

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



Цитата(РРоман @ Mar 19 2008, 11:57) *
Имеется следующая задача:
создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц).
Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как?
Можно ли для этого использовать ДПФ? Если да то как (в общих чертах).

Спасибо!

Это просто и без ДПФ. Берете считаете ФНЧ fir c частотой среза 50 Гц. Получаете коэф. h. Коэффициенты перестраиваемого(matlab) hf = h.*sin(2*pi*f/Fs*(1:length(h)), f - центральная частота настройки фильтра, Fs- частота дискретизации. ДПФ конечно можно использовать, только FFT придется считать. Примерно так делается: x - 512 отсчетов входного сигнал. Далее.
Код
      X = fft([x,zeros(1, 512]); % фурье транформанта входного сигнала дополненного нулями.
      F = fft([h,zeros(1, 1024-length(h)); %   фурье транформанта фильтра, можно считать один раз
      X = X.*F;  % свертка в частотной области
      y = ifft(X); %
      y(1:512) = y(1:512) + pred_y; % 512 отсчетов отфильтрованного сигнала
      pred_y = y(513:1024);   % отклик фильтра от предидущего блоке используется для следующего        
                                          % блока, начальный pred_y=0

Важно чтобы length(x) + length(h) < sizeFFT
ps: А вообще почитайте Рабинера с Голдом h**p://dsp-book.narod.ru/RG.html, там про это душевно
написано smile.gif


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
РРоман
сообщение Apr 28 2008, 10:24
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(DRUID3 @ Mar 19 2008, 13:23) *
ДПФ можно, но перестраиваться он будет только по сетке частот, ввиду блочности алгоритма, к тому же АЧХ будет формы sinc(f) если не применять окон. Лучше применить алгоритм Герцеля - эффективнее ДПФ, FIFO по своей сути, плавно может перестраиваться по диапазону...


Спасибо большое всем за советы. Не сразу удалось попробовать.
Пытаюсь применить Герцеля и что-то совсем не то получается. Моделирую в MathCAD (наверное уже смешно?). На входе обычная синусоида. Пропускаю ее через фильтр:
y(n) = x(n) + 2cos(2*pi*f/Fd)*y(n-1) - y(n-2)

В результате получаю, то модулированную синусоиду, то вообще что-то не понятное...
Может быть подскажете где ошибка? Прилагаю скриншот из MathCAD ( в данном случае частота дискретизации 2000, искомая частота - 10, рассчитываю на 2000 отсчетов входного сигнала)
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
РРоман
сообщение Apr 28 2008, 12:39
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(alex_os @ Mar 20 2008, 11:07) *
Это просто и без ДПФ. Берете считаете ФНЧ fir c частотой среза 50 Гц. Получаете коэф. h. Коэффициенты перестраиваемого(matlab) hf = h.*sin(2*pi*f/Fs*(1:length(h)), f - центральная частота настройки фильтра, Fs- частота дискретизации.
Важно чтобы length(x) + length(h) < sizeFFT


Поясните пожалуйста запись (1:length(h)) в формуле (я почти не знаком с м-языком).
Go to the top of the page
 
+Quote Post
proxi
сообщение Apr 28 2008, 12:46
Сообщение #8


Гуру
******

Группа: Banned
Сообщений: 2 754
Регистрация: 5-06-05
Из: Zurich
Пользователь №: 5 744



Цитата(РРоман @ Mar 19 2008, 11:57) *
Имеется следующая задача:
создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц).
Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как?
Можно ли для этого использовать ДПФ? Если да то как (в общих чертах).

Спасибо!

Фильтр Юзвинского рулит... полагаю что его можно реализовать в цифровом виде, если нужно??
Go to the top of the page
 
+Quote Post
РРоман
сообщение Apr 28 2008, 12:56
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(proxi @ Apr 28 2008, 16:46) *
Фильтр Юзвинского рулит... полагаю что его можно реализовать в цифровом виде, если нужно??

Может быть укажете какую-нибудь ссылочку по теме?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Apr 28 2008, 13:13
Сообщение #10





Guests






Цитата(РРоман @ Mar 19 2008, 12:57) *
создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц).
Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как?
Можно ли для этого использовать ДПФ? Если да то как (в общих чертах).


Почему бы не взять книжку по цифровым фильтрам, да и не почитать ?
Как я понимаю, у Вас учебная задачаsmile.gif

Если Вы научитесь считать ФНЧ любым понятным Вам способом, то фильтры остальных типов легко приводятся к ФНЧ.
Например ПФ это два ФНЧ с требуемыми частотами среза и два сумматора.

Если хочется что-то поинтереснее, то см:
http://www.tsi.lv/RSR/vol04/RSR2000v04-07ae.pdf
Go to the top of the page
 
+Quote Post
РРоман
сообщение Apr 29 2008, 06:47
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(TSerg @ Apr 28 2008, 17:13) *
Почему бы не взять книжку по цифровым фильтрам, да и не почитать ?
Как я понимаю, у Вас учебная задачаsmile.gif

Если Вы научитесь считать ФНЧ любым понятным Вам способом, то фильтры остальных типов легко приводятся к ФНЧ.
Например ПФ это два ФНЧ с требуемыми частотами среза и два сумматора.

Если хочется что-то поинтереснее, то см:
http://www.tsi.lv/RSR/vol04/RSR2000v04-07ae.pdf


Кое-что по фильтрам читал, но на решение поставленной задачи меня не хватает... Задача-то не учебная, а вполне рабочая.

За ссылочку большое спасибо! Попробуем... Только по-моему алгоритм Герцеля попроще считается, за то описанный в работе вариант, наверное, более гибкий.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Apr 29 2008, 11:05
Сообщение #12





Guests






Цитата(РРоман @ Apr 29 2008, 10:47) *
Задача-то не учебная, а вполне рабочая.
Только по-моему алгоритм Герцеля попроще считается, за то описанный в работе вариант, наверное, более гибкий.


Тогда надо точнее описывать задачу и точнее будет ответ.

Вообще-то, алгоритм Герцеля, как разновидность DFT, занимается преобразованием свойств сигнала из временной области в частотную. Понятно также, что алгоритм блочный.
Заниматься его временными откликами - странная затея.
Go to the top of the page
 
+Quote Post
РРоман
сообщение Apr 30 2008, 06:21
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(TSerg @ Apr 29 2008, 15:05) *
Вообще-то, алгоритм Герцеля, как разновидность DFT, занимается преобразованием свойств сигнала из временной области в частотную. Понятно также, что алгоритм блочный.
Заниматься его временными откликами - странная затея.

Так, вроде, все по книжке (Сергиенко А.П. "ЦОС"): "ДПФ можно представить набором фильтров, а дискретную фильтрацию можно организовать с помощью ДПФ", там еще и АЧХ двух частотных каналов ДПФ приведены...
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Apr 30 2008, 06:38
Сообщение #14





Guests






Цитата(РРоман @ Apr 30 2008, 10:21) *
Так, вроде, все по книжке (Сергиенко А.П. "ЦОС"): "ДПФ можно представить набором фильтров, а дискретную фильтрацию можно организовать с помощью ДПФ", там еще и АЧХ двух частотных каналов ДПФ приведены...


"Фильтр" Герцеля даст магнитуду по конкретной анализируемой частоте после обработки блока данных.
Более того, при совпадении частоты настройки "фильтра" и частоты входного сигнала "фильтр" становится неустойчивым, что мы и видели на Вашей картинке, а также см:
Прикрепленное изображение

Если же входная частота ушла, то "фильтр" имеет затухающий временной отклик.
Прикрепленное изображение

Но дело в том, что именно временной отклик в этом алгоритме мало кого интересует.
Go to the top of the page
 
+Quote Post
Unomano
сообщение May 3 2008, 10:04
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-09-05
Из: Минск, Беларусь
Пользователь №: 8 203



А какая неравномерность в полосе пропускания, и какое подавление за ее пределами?
Go to the top of the page
 
+Quote Post
alex_os
сообщение May 3 2008, 14:32
Сообщение #16


Знающий
****

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



Цитата(РРоман @ Apr 28 2008, 15:39) *
Поясните пожалуйста запись (1:length(h)) в формуле (я почти не знаком с м-языком).
Ну кажется в маткаде тоже самое записывается как i=1..длина_массива_h.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
РРоман
сообщение May 6 2008, 09:06
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(TSerg @ Apr 30 2008, 10:38) *
"Фильтр" Герцеля даст магнитуду по конкретной анализируемой частоте после обработки блока данных.
Более того, при совпадении частоты настройки "фильтра" и частоты входного сигнала "фильтр" становится неустойчивым, что мы и видели на Вашей картинке


Я реализовал алгоритм не полностью, а только ту его часть, которая вычисляется на каждом отсчете:
Код
s(n) = x(n) + 2cos(2πω)s(n − 1) − s(n − 2)

и решил, что это и будет мой фильтр :). Мощность сигнала (magnitude?) я вообще не считал. Правильно я поступал или нет? Можно ли вообще реализовать ВЕРМЕННУЮ фильтрацию с помощью ДПФ или Герцеля???

Цитата(Unomano @ May 3 2008, 14:04) *
А какая неравномерность в полосе пропускания, и какое подавление за ее пределами?


Конкретные цифры пока не известны. Фильтр нужен для звука, параметры буду подбирать экспериментально.

Цитата(alex_os @ May 3 2008, 18:32) *
Ну кажется в маткаде тоже самое записывается как i=1..длина_массива_h.


тогда не понимаю что означает запись:
hf = h.*sin(2*pi*f/Fs*(1:length(h))
нужно рассчитать для всех элементов массива? Тогда, какого массива?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение May 6 2008, 10:49
Сообщение #18





Guests






Цитата(РРоман @ May 6 2008, 13:06) *
Можно ли вообще реализовать ВЕРМЕННУЮ фильтрацию с помощью ДПФ или Герцеля???
Фильтр нужен для звука, параметры буду подбирать экспериментально.


Можно, но надо понимать что за этим стоит:
- перевод части сигнала из временной области в частотную (ДПФ);
- "ликвидация" ненужных частотных составляющих;
- перевод частотного представления измененного по спектру сигнала из частотной области во временную (ОДПФ).
Герцель ( как разновидность ДПФ) не особо подходит для этой задачи. Его задача - анализ сигнала на предмет наличия небольшого числа определенных частот.
ДПФ и ОДПФ работают, но, разумеется, надо использовать быстрые варианты.

Целесообразность использования преобразований Фурье или временной фильтрации на основе фильтров с КИХ- или БИХ-характеристиками определяется особенностями конкретной задачи.
Звук, инфразвук или СВЧ - не суть.
Т.е. должны быть определены требования к параметрам абстрактного фильтра.
Go to the top of the page
 
+Quote Post
alex_os
сообщение May 6 2008, 11:23
Сообщение #19


Знающий
****

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



Цитата(РРоман @ May 6 2008, 12:06) *
тогда не понимаю что означает запись:
hf = h.*sin(2*pi*f/Fs*(1:length(h))
нужно рассчитать для всех элементов массива? Тогда, какого массива?

Все просто делается FIR ФНЧ, его коэф - массив h, размером length(h). каждый элемент массива поэлеметно (.*) перемножаете на синусоиду нужной вам частоты. в результате получается полосовой FIR с коэф. hf, центральная частота полосового фильтра f. ФНЧ h проектируете любым доступным способом исходя из нужных Вам полосы пропускания, затухания и пр. Получается табличка h, sin произвольной частоты легко посчитать. Все это, в большинстве случаев работает.
ps и забудьте про Герцеля smile.gif.


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
РРоман
сообщение May 7 2008, 12:44
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 24-01-08
Пользователь №: 34 374



Цитата(TSerg @ May 6 2008, 14:49) *
Целесообразность использования преобразований Фурье или временной фильтрации на основе фильтров с КИХ- или БИХ-характеристиками определяется особенностями конкретной задачи.
Звук, инфразвук или СВЧ - не суть.
Т.е. должны быть определены требования к параметрам абстрактного фильтра.

Спасибо, вроде бы понял. Отдельное спасибо за ссылку на статеечку, попробовал описанный там вариант фильтра - вроде на модели заработал, буду пробовать в железе.



Цитата(alex_os @ May 6 2008, 15:23) *
Все это, в большинстве случаев работает.
ps и забудьте про Герцеля :).


Угу, спасибо.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 12:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01554 секунд с 7
ELECTRONIX ©2004-2016