|
Перестраиваемый полосовой фильтр |
|
|
|
Mar 19 2008, 08:57
|
Участник

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

|
Имеется следующая задача: создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц). Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как? Можно ли для этого использовать ДПФ? Если да то как (в общих чертах).
Спасибо!
|
|
|
|
|
Mar 20 2008, 07:07
|
Знающий
   
Группа: Свой
Сообщений: 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, там про это душевно написано
--------------------
ну не художники мы...
|
|
|
|
|
Apr 28 2008, 10:24
|
Участник

Группа: Участник
Сообщений: 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 отсчетов входного сигнала)
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 28 2008, 12:39
|
Участник

Группа: Участник
Сообщений: 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)) в формуле (я почти не знаком с м-языком).
|
|
|
|
|
Apr 28 2008, 12:56
|
Участник

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

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

|
Цитата(РРоман @ Mar 19 2008, 12:57)  создать полосовой фильтр с заданной полосой пропускания (~100Гц), при этом необходимо иметь возможность "перемещать" его полосу пропускания заданном диапазоне частот (1Гц-3КГц). Подскажите пожалуйста дилетанту можно ли вообще создать такой фильтр в цифровой форме? Как? Можно ли для этого использовать ДПФ? Если да то как (в общих чертах). Почему бы не взять книжку по цифровым фильтрам, да и не почитать ? Как я понимаю, у Вас учебная задача  Если Вы научитесь считать ФНЧ любым понятным Вам способом, то фильтры остальных типов легко приводятся к ФНЧ. Например ПФ это два ФНЧ с требуемыми частотами среза и два сумматора. Если хочется что-то поинтереснее, то см: http://www.tsi.lv/RSR/vol04/RSR2000v04-07ae.pdf
|
|
|
|
|
Apr 29 2008, 06:47
|
Участник

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

|
Цитата(TSerg @ Apr 28 2008, 17:13)  Почему бы не взять книжку по цифровым фильтрам, да и не почитать ? Как я понимаю, у Вас учебная задача  Если Вы научитесь считать ФНЧ любым понятным Вам способом, то фильтры остальных типов легко приводятся к ФНЧ. Например ПФ это два ФНЧ с требуемыми частотами среза и два сумматора. Если хочется что-то поинтереснее, то см: http://www.tsi.lv/RSR/vol04/RSR2000v04-07ae.pdf Кое-что по фильтрам читал, но на решение поставленной задачи меня не хватает... Задача-то не учебная, а вполне рабочая. За ссылочку большое спасибо! Попробуем... Только по-моему алгоритм Герцеля попроще считается, за то описанный в работе вариант, наверное, более гибкий.
|
|
|
|
Guest_TSerg_*
|
Apr 29 2008, 11:05
|
Guests

|
Цитата(РРоман @ Apr 29 2008, 10:47)  Задача-то не учебная, а вполне рабочая. Только по-моему алгоритм Герцеля попроще считается, за то описанный в работе вариант, наверное, более гибкий. Тогда надо точнее описывать задачу и точнее будет ответ. Вообще-то, алгоритм Герцеля, как разновидность DFT, занимается преобразованием свойств сигнала из временной области в частотную. Понятно также, что алгоритм блочный. Заниматься его временными откликами - странная затея.
|
|
|
|
|
Apr 30 2008, 06:21
|
Участник

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

|
Цитата(TSerg @ Apr 29 2008, 15:05)  Вообще-то, алгоритм Герцеля, как разновидность DFT, занимается преобразованием свойств сигнала из временной области в частотную. Понятно также, что алгоритм блочный. Заниматься его временными откликами - странная затея. Так, вроде, все по книжке (Сергиенко А.П. "ЦОС"): "ДПФ можно представить набором фильтров, а дискретную фильтрацию можно организовать с помощью ДПФ", там еще и АЧХ двух частотных каналов ДПФ приведены...
|
|
|
|
Guest_TSerg_*
|
Apr 30 2008, 06:38
|
Guests

|
Цитата(РРоман @ Apr 30 2008, 10:21)  Так, вроде, все по книжке (Сергиенко А.П. "ЦОС"): "ДПФ можно представить набором фильтров, а дискретную фильтрацию можно организовать с помощью ДПФ", там еще и АЧХ двух частотных каналов ДПФ приведены... "Фильтр" Герцеля даст магнитуду по конкретной анализируемой частоте после обработки блока данных. Более того, при совпадении частоты настройки "фильтра" и частоты входного сигнала "фильтр" становится неустойчивым, что мы и видели на Вашей картинке, а также см:
Если же входная частота ушла, то "фильтр" имеет затухающий временной отклик.
Но дело в том, что именно временной отклик в этом алгоритме мало кого интересует.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|