Чи є технічний термін для цього простого способу згладжування сигналу?


26

По-перше, я новачок у DSP і не маю реальної освіти в ньому, але я розробляю програму аудіовізуалізації, і я представляю масив FFT як вертикальні смуги, як у типовій візуалізації частотного спектра.

Проблема в мене полягала в тому, що значення звукового сигналу змінювались занадто швидко, щоб отримати приємний візуальний вихід, якщо я просто відобразив значення FFT безпосередньо:

введіть тут опис зображення

Тому я застосовую просту функцію до значень, щоб "згладити" результат:

// pseudo-code
delta = fftValue - smoothedFftValue;
smoothedFftValue += delta * 0.2; 
// 0.2 is arbitrary - the lower the number, the more "smoothing"

Іншими словами, я беру поточне значення і порівнюю його з останнім, а потім додаю частину цієї дельти до останнього значення. Результат виглядає приблизно так:

введіть тут опис зображення

Отже, моє запитання:

  1. Це налагоджена закономірність чи функція, для якої вже існує термін? Так, який термін? Я використовую "згладжування" вище, але я знаю, що це означає щось дуже специфічне в DSP і може бути невірним. Крім цього, здавалося, це може бути пов'язано з об’ємною оболонкою, але також не зовсім те саме.

  2. Чи є кращі підходи чи подальше вивчення рішень цього, на що я повинен звернутись?

Дякую за ваш час та вибачення, якщо це дурне питання (читаючи тут інші дискусії, я усвідомлюю, що мої знання набагато нижчі, ніж у середньому, як здається).


1
Тепер мені цікаво, що ви отримуєте, якщо взяти згладжений FFT і зворотний - FFT.
користувач253751

Чи було б простіше просто зробити першу відповідь в іншому порядку? current_value = current_value * розпад; якщо (new_value> current_value) {current_value = new_value; }
Річард Форстер

@immibis Це має бути віддзеркаленням від мого розуміння. Виправте мене, якщо я помиляюся.
Андреас

Звичайно, і оптимізуючий компілятор створить таку ж реалізацію. Ключовим моментом було отримати правильний результат при (current_value * decay) <new_value <current_value.
Річард Форстер

2
Мені дуже подобається це питання. Це одна з тих, коли хтось, хто випробовує кілька речей, випадково виявляє себе внизу величезного дерева знань (зокрема, фільтрів безмежного імпульсного реагування). Тим часом люди, які вже піднімаються на дерево, можуть описати всі класні речі, які вони вже виявили серед гілок ...
DrMcCleod

Відповіді:


37

Ви реалізували це однополюсний фільтр низьких частот, який іноді називають герметичним інтегратором . Ваш сигнал має різницеве ​​рівняння:

у[н]=0,8у[н-1]+0,2х[н]

х[н]у[н]


4
Велике спасибі за це. Отже, так корисно. Гугл сам по собі - це як втрата в морі, коли мова йде про речі DSP. Просто наявність декількох термінів для пошуку дає мені щось зрозуміти.
Майкл Бромлі

3
Цікаво. Я думаю, що ОП застосовує цей фільтр до ряду значень в окремих бункерах в частотній області. Нормальний низький прохід застосовується для серії вибірок у часовій області. Чи ефект однаковий (я не думаю, що так, бо частини високої частоти все ще є в сигналі, але ... їх інтенсивність змінюється повільніше?)? Якщо ні, чи могли б ви детальніше розібратися, що фільтр насправді робить для сигналу у часовій області?
Йонас Шефер

3
@JonasWielicki Я думаю, що метою є вирівнювання кожного окремого значення контейнера, щоб воно не змінювалося дуже швидко. також фільтр низьких частот (як пояснено у відповіді) застосовний до будь-якого часового ряду, незалежно від його домену (часу чи частоти чи будь-чого іншого).
Arpit Jain

@arpitjain Я це розумію. Я просто хотів би знати, чи є якесь розуміння (не обов’язково з боку вас, ОП або відповідача), як це впливає на часову область, коли ви це робите.
Йонас Шефер

@JonasWielicki Операція - це згортання в частотній області, тому вона перетворюється на множення (відповідних (зворотних) перетворень Фур'є) у часовій області.
MBaz

17

Попередження: включіть історію, старі папери (я їх люблю) та перфокарти!

а=0,2

у(н)=у(н-1)+а[х(н)-у(н-1)],
у(н)=ах(н)+(1-а)у(н-1).

Перша вищеназвана версія менш природна, але вона дозволяє уникнути множення і є якось ефективнішою. Обидві формули дають лінійний , причинний і нескінченний фільтр імпульсного відгуку . Історія сходить до Пуассона, Колмогорова-Зурбенко Адаптивними фільтрами , Брауном (Статистичне прогнозування для інвентаризаційного контролю. McGraw-Hill, 1959), Холт (1957) та Вінтерс (1960). Він реалізований як рекурсивна схема фільтрації , відома під різними назвами в літературі:

  • Експоненціальний середній фільтр низького проходу першого порядку ,
  • експоненціальний середній показник,
  • експоненціальне згладжування ,
  • експоненціальна ковзна середня величина (EMA),
  • експоненціально зважена середня середня (EWMA),
  • Просте (лінійне) експоненціальне згладжування Брауна (іноді його називають SES),
  • Модель ARIMA (0,1,1) .

год[н]=(1-а)у[н]ан

Для історичної довідки Роберт Г. Браун та Артур Д. Літтл використали цей метод у 1956 р. В Експоненціальному згладжуванні для прогнозування попиту , очевидно, на тютюнову промисловість. Трохи більше історії та пояснення можна знайти в Holt-Winters прогнозування для чайників (або розробка) - Частина I . Пітер Зена пропонує критичний огляд у Деякі зауваження щодо експоненціального згладжування , 1966 р. Розділ Р. Брауна в Енциклопедії досліджень операцій та науки управління (книги Google) датується історією 1944 року, тут читаються відчитані сторінки:

Експоненційне згладжування, с.  205, Енциклопедія досліджень з експлуатації та науки про управління

Експоненційне згладжування, с.  206, Енциклопедія досліджень з експлуатації та науки про управління

Багато методів розширюють це вирівнювання, що не має дійсності, коли дані мають тенденцію чи сезонність. Деякі з них відомі як подвійне або потрійне експоненціальне згладжування та фільтри Хольта-Вінтера .

Ви також можете перевірити: як працює цей «простий фільтр»?


1
Дякую, це чудово. Як вже було сказано, я абсолютно нова в цьому, тому деякі ваші відповіді потребують подальшого дослідження для мене, щоб повністю оцінити, але це, безумовно, відповідає на моє запитання, а потім на деякі. Якщо не для іншого, раніше відповіді, це теж, звичайно , гідний визнання як в відповідь.
Майкл Бромлі

1
Невелика корекція. Зими 1 (960) повинні бути Зимовими (1960 р.) Я припускаю
СГР

9

Чи є кращі підходи чи подальше вивчення рішень цього, на що я повинен звернутись?

Нормальний підхід для звукових лічильників - це "детектор пікових втрат".

if new_value > current_value
  current_value = new_value;
else
 current_value = current_value * decay;  

Це негайно реагує на будь-який новий або піковий або перехідний час сигналу, але він затримується на деякий час, тому створює набагато менш суєтну картину. Занепад повинен бути постійним між 0 і 1. Він контролює, наскільки швидко бруски виконуються, а 0 - миттєвий, а 1 - ніколи.


Зауважу, що це схоже на завдання, яке я робив у коледжі, дуже тонкозвуковий MIDI (створений у попередньому завданні) був покращений за рахунок (і масштабування відповідно до піків і тривалості) (повністю прямокутний) сигналів ноти з трикутним сигнал, який дуже сильно змусився (хоча і не миттєво), а потім поступово згасав, створюючи різку ноту, яка відмирала «природним шляхом». Значне поліпшення звучання пісні (Fur Elise в цьому випадку).
KRyan

Я думаю, ви хочете зберегти, new_valueякщо він більший заcurrent_value * decay
user276648

6

Навколо кола підрядника США, цей фільтр часто називають "альфа-фільтром", оскільки його можна охарактеризувати одним параметром, який традиційно називають "альфа".

Це безпосередньо аналог простого аналогового RC фільтрів низьких частот.

Вони надзвичайно прості, мають серйозні обмеження, але вони мають незаперечну перевагу перед складнішими (і складними!) Фільтрами, що, якщо ви позбавитесь від їх проблемних областей, вони отримають роботу.


3

Як згадувалося в інших відповідях, це однополюсний рекурсивний фільтр, тип фільтра нескінченного імпульсного реагування (IIR).

Чудовим ресурсом для інформації про цю та інші функції DSP є посібник вченого та інженера Стівена У. Сміта щодо цифрової обробки сигналів : нескінченний імпульсний відгук (IIR)

... кожну точку вихідного сигналу знаходять шляхом множення значень вихідного сигналу на коефіцієнти "a", множення попередньо обчислених значень вихідного сигналу на коефіцієнти "b" та додавання продуктів разом. Зауважте що для b0 немає значення, оскільки це відповідає вибірці, що обчислюється. Рівняння 19-1 називається рівнянням рекурсії, а фільтри, які його використовують, називаються рекурсивними фільтрами. Значення "a" і "b", які визначають фільтр, називаються коефіцієнтами рекурсії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.