На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 40,
участников - 2 [ UB8JAJ, ivb]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Радиосигналы —› Фильтрация на основе FFT. Не понимаю одного практического момента. 
Широкополосные связные радиоприемники в нашем магазине


Icom IC-R6
руб.

Yaesu VR-120D
руб.

Icom IC-R75
руб.

Yaesu VR-160
руб.

Icom IC-R20
руб.
Автор Сообщение
pavelkolodin
Участник
Offline1.3
с апр 2012
Санкт-Петербург
Сообщений: 83

Дата: 27 Авг 2012 15:51:41 #  

Есть вопрос практической реализации фильтра на основе FFT.

Реализовал алгоритм: hann() -> FFT() -> изменить спектр -> IFFT() -> sum().
Перекрытие - пол-окна (или 1/4 или 1/8 - регулируемо), окно Ханна (cos(-pi/2 ... pi/2)) (с коэффициентом, соответствующим степени перекрытия).

Например, win = 2048, нужно подавить bin = 10. Я обнуляю Re и Im этого бина, учитывая, что по индексу номер 0 и индексу номер win/2 лежит "постоянка" и что вторая часть зеркально развёрнута.

Практическая проблема в том, что аккуратно затухающий к краям окна сигнал (после hann()) после изменения его спектра и обратного FFT имеет право поменяться так, что перестанет аккуратно затухать к краям (-; Стыки окон портятся и щёлкают.

Есть мысль (не реализована) сделать расширение спектра - к пропущенному через hann() окну с двух сторон добавить какое-то кол-во нулей (например по win/2) и после обратного FFT() накладывать эти широкие окна. Почему это может помочь - я не знаю.
metrolog
Участник
Offline3.9
с авг 2006
Дубна
Сообщений: 1614

Дата: 27 Авг 2012 16:19:18 #  

Практическая проблема в том, что аккуратно затухающий к краям окна сигнал (после hann()) после изменения его спектра и обратного FFT имеет право поменяться так, что перестанет аккуратно затухать к краям (-; Стыки окон портятся и щёлкают.
а как так получается? он же на 0 сводится. На самих краях значит 0 и остается, а дальше плавно, если не было разрвов в "изменить спектр".
Очевидных рекомендаций наверное две: "изменить спектр" должна быть без разрывов и ограничить её усиление какими-то разумными пределами, видимо просто динамического диапазона нехватает. Усилить можно потом. Можно в несколько этапов попробовать, если хочется уж очень круто.
Реклама
Google
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 27 Авг 2012 16:29:23 #  

Рекомендация может быть только одна - делать правильно, либо быструю свёртку, либо oversampled банк фильтров. Окно это импульсная характеристика ваших полосовых фильтров, а вот децимируете вы не по котельникову(перекрытие блоков), отсюда и щелчки, если соблюдать котельникова то почти скользящее FFT получится, что не выгодно по вычислительным затратам.
pavelkolodin
Участник
Offline1.3
с апр 2012
Санкт-Петербург
Сообщений: 83

Дата: 27 Авг 2012 16:32:28 #  

а как так получается? он же на 0 сводится. На самих краях значит 0 и остается, а дальше плавно, если не было разрвов в "изменить спектр".
Очевидных рекомендаций наверное две: "изменить спектр" должна быть без разрывов и ограничить её усиление какими-то разумными пределами, видимо просто динамического диапазона нехватает. Усилить можно потом. Можно в несколько этапов попробовать, если хочется уж очень круто.

1. Я не усиливаю, а убираю. Возможно моё тупое обнуление - это слишком жестоко.

Как получается не ноль?
Ноль существовал потому, что сумма некоторых гармонических функций суммировалась так, что в данных точках получался ноль. Обнулив некоторые бины, я выключил какие-то из гармонических функций, в результате сумме стало чего-то недоставать для формирования старого сигнала, в том числе и нулей. Это моё грубое понимание.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 27 Авг 2012 23:05:04 · Поправил: Programmist (27 Авг 2012 23:19:11) #  

pavelkolodin
Здесь готовое решение и тема соответствующая.
Чтобы было по Котельникову, petr0v прав, нужно скользящее FFT делать, а там двойное перекрытие Ханном, ну и еще пара "фокусов".
Для большинства задач качество фильтрации и скорость работы получается вполне приемлемым.
pavelkolodin
Участник
Offline1.3
с апр 2012
Санкт-Петербург
Сообщений: 83

Дата: 29 Авг 2012 01:23:52 #  

Двойное перекрытие Ханном - это как? У меня сейчас реализовано перекрытие окон по 50%. Ханн.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 29 Авг 2012 09:14:49 · Поправил: Programmist (29 Авг 2012 09:41:38) #  

перекрытие окон по 50%. Ханн. Оно самое, игра слов, иначе не получится. Только обнулять бины на краях спектра при фильтрации нужно не полностью, а тоже по Ханну, умножив на половинку окна результат прямого FFT. Чем шире эта половинка, тем лучше картина на стыках блоков и хуже крутизна среза. У меня в программе это обозначено как "Fade" (на краях спектра в Герцах). Здесь можно попробовать и другие оконные функции.
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.044; miniBB ®