Те, що результат складний, слід очікувати. Я хочу зазначити кілька речей:
Ви застосовуєте фільтр доменної частоти для цегляної стіни до даних, намагаючись зняти нуль всі виходи FFT, що відповідають частоті більше 0,005 Гц, а потім зворотне перетворення, щоб знову отримати сигнал часової області. Для того, щоб результат був реальним, тоді вхід до зворотного FFT повинен бути сполученим симетричним . Це означає, що для довжини - FFT,N
Х[ k ] = X∗[ N- k ] , k = 1 , 2 , … , N2- 1( Ne v e n )
Х[ k ] = X∗[ N- k ] , k = 1 , 2 , … , ⌊ N2⌋( Nо дг)
- Зауважте, що для парних, і загалом не рівні, але вони обидва реальні. Для непарних , повинен бути реальним.X [ 0 ] X [ NNХ[ 0 ]Х[ N2]NХ[ 0 ]
Я бачу, що ви намагалися зробити щось подібне у своєму коді вище, але це не зовсім правильно. Якщо ви застосовуєте вищевказану умову щодо сигналу, який ви передаєте на зворотний FFT, тоді ви повинні отримати реальний сигнал.
Мій другий пункт більш філософський: те, що ви робите, буде працювати, оскільки воно придушить вміст доменних частот, який ви не хочете. Однак це, як правило, не фільтр низьких частот, який би реалізувався на практиці. Як я вже згадував, те, що ви робите, - це по суті застосувати фільтр, який має величину реакції величини цегляної стіни (тобто ідеально прямокутної форми). Імпульсна характеристика такого фільтра має форму . Оскільки множення в частотній області еквівалентно (у випадку використання DFT, кругової) згортки у часовій області, ця операція еквівалентна згортанню сигналу часової області з функцією .s i n c ( x )s i n c
Чому це проблема? Згадаймо, як виглядає функція у часовій області (нижче зображення безсоромно запозичене у Вікіпедії):s i n c
Функція має дуже широку підтримку у часовій області; воно затухає дуже повільно, коли ви віддаляєтесь вчасно від його основної частки. Для багатьох застосувань це не бажана властивість; коли ви перетворюєте сигнал на , наслідки повільно згасаючих бічних кульок часто будуть помітні у формі часової області відфільтрованого вихідного сигналу. Цей ефект часто називають дзвоном . Якщо ви знаєте, що ви робите, є деякі випадки, коли цей тип фільтрації може бути доречним, але в загальному випадку це не те, що ви хочете.s i n cs i n c
Існують більш практичні засоби застосування фільтрів низьких частот, як у часовій, так і в частотній областях. Кінцеві імпульсні реакції та нескінченні імпульсні фільтри можуть застосовуватися безпосередньо, використовуючи їх різницеве рівняння . Або якщо ваш фільтр має досить тривалий імпульсний відгук, ви часто можете отримувати переваги від продуктивності, використовуючи швидкі методи згортки , засновані на FFT (застосовуючи фільтр шляхом множення в частотній області замість згортки у часовій області), наприклад перекриття- збереження та перекриття-додавання методів.