Які відносні достоїнства різних схем збірної операції?


12

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

Це спричиняє моє запитання: Які методи розгортання зазвичай використовуються, і які їх відносні достоїнства? Чому я б обрав нульову підкладку, нульове замовлення або перше замовлення та які інші методи доступні?

Деякі роз’яснення:

  • Система працює в режимі реального часу, тому схема посильного моделювання повинна бути причинною.
  • Після пробовідбору йде антифільтруючий фільтр, який також можна вказати.

Відповіді:


11

Для цілей цієї відповіді я буду використовувати термінологію Matlab і визначити "upsampling" як процес вставки нулів між вхідними зразками, а "інтерполяція" як комбінований процес поглинання та фільтрації для видалення псевдонімів ( є коефіцієнтом інтерполяції) , що Upsampling вводить. Для пояснення того, як / чому підсилення синхронізації вводить псевдоніми, перегляньте цю тему .м - 1 мm1m1m

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

Фільтр FIR

Інтерполяція фільтрів FIR є ефективною, оскільки вони поєднують в собі оптимізацію та фільтри псевдонімів в один крок. Це найлегше помітити на прикладі. Припустимо, у нас є послідовність даних і ми хочемо інтерполювати її з коефіцієнтом два. Перший крок - збільшити вибірку в два рази. Це змінює початкову послідовність даних з на .х 0 , х 1 , . . . х N х 0 , 0 , х 1 , 0 , . . . x Nx[n]x0,x1,...xNx0,0,x1,0,...xN

Тепер припустимо, у нас є фільтр FIR з низькою прохідністю, , який ми будемо використовувати для видалення псевдоніму. Коли ми з'єднуємо послідовність даних, що проходять вище, з фільтром, половина кранів фільтра стимулюється ненульовими зразками, а половина кранів - неактивними, оскільки вони відповідають нульовим вибіркам. Половина, що стимулюється, і половина, що є неактивною, прогортається вперед і назад, коли фільтр проходить через дані. Ці два набори кранів іноді називають фазами фільтру.h[n]

Цей же ефект може бути досягнутий неявним шляхом, усунувши перебіг збірки та фільтруючи вихідну послідовність даних за допомогою інтерполяційного фільтра FIR. Інтерполяційний фільтр FIR виробляє виходів для кожного вхідного зразка. Для всіх виходів фільтр буде працювати на одних і тих же вхідних зразках на (де K - кількість відводів фільтра, а «стеля» - функція стелі).m c e i l ( К / м )mmceil(K/m)

Приклад, сподіваємось, проілюструє, як це працює. Припустимо, що у нас є шість кранових фільтрів, і ми інтерполюємо в два рази. Фільтр-крани є [1 -2 4 4 -2 1]. Якщо ми буквально інтерполювали, а потім фільтрували, зразки та фільтр-крани вибудовувались (коли було повне перекриття) наступним чином:

0:1x2:20:4x1:40:2x0:1
Наступний зразок ...

x3:10:2x2:40:4x1:20:1
Наступний зразок ...

0:1x3:20:4x2:40:2x1:1
тощо. Сенс інтерполяційного фільтра полягає в тому, що він пропускає фактично вставляючи нулі та просто чергує, який набір кранів він використовує замість цього. Таким чином, попередня послідовність тепер виглядатиме так:

x2:2x1:4x0:1

x3:1x2:4x1:2

x3:2x2:4x1:1

Затримайте нульовий порядок

Інтерполятор утримування нульового порядку - це той, який просто повторює кожен зразок рази. Отже, коефіцієнт двох інтерполяторів утримування нульового порядку перетворює в . Цей метод привабливий тим, що його реалізувати надзвичайно просто, як з точки зору кодування, так і з розрахунку навантаження.m1x0,x1,...xNx0,x0,x1,x1,...xN,xN

Проблема з ним полягає в тому, що його низькочастотна фільтрація є досить поганою. Ми можемо бачити, що коли ми визнаємо, що нульовий інтерполятор є особливим випадком інтерполяції FIR. Це відповідає оптимізації, з подальшим фільтром прямокутника. Перетворення Фур'є прямокутного фільтра - це функція sinc, яка є досить пошарпаним фільтром низьких частот. Його пошарування можна зафіксувати компенсуючим фільтром FIR, але якщо ви збираєтеся це зробити, ви можете просто використати хороший фільтр низьких частот.m

Утримуйте перший замовлення

Утримування першого порядку - це крок від інтерполятора нульового утримування тим, що він лінійно інтерполює збірники з використанням двох найближчих вхідних зразків. Отже, коефіцієнт двох інтерполяторів утримування першого порядку перетворив би у .x0,x1,...xNx0,x0+x12,x1,x1+x22,...xN

Як і інтерполятор утримування нульового порядку, інтерполятор утримування першого порядку є особливим випадком інтерполяції FIR. Це відповідає збільшенню та фільтруванню трикутним фільтром. Для інтерполяції з коефіцієнтом двох фільтр дорівнює , для інтерполяції з коефіцієнтом трьох - фільтр тощо.[1[12112][132312312]

Трикутний фільтр - це два фільтри прямокутника, зібрані разом, що відповідає квадрату синк у частотній області. Це певний крок від нульового порядку, але все ще не є великим.

IIR фільтр

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

Інтерполяція FFT

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

Вищий орден тримається

Інтерполятори утримування другого порядку зазвичай називають "квадратичними інтерполяторами". Вони нелінійні і тому не можуть бути реалізовані як фільтри FIR, які є лінійними. Я не добре розумію математику за ними, тому не буду обговорювати їхню ефективність. Я, однак, скажу, що я вважаю, що вони є дещо поширеними поза обробкою сигналів.

Існують також методи вищого порядку (три і більше). Вони називаються "поліноміальними регресіями".

Редагувати:

Каскадні інтеграторні гребінчасті (CIC) фільтри

Я забув згадати фільтри CIC . Фільтри CIC використовуються з двох причин: вони використовують лише суматори / віднімачі (не така вже й велика справа, коли множення швидко і дешево), і вони можуть зробити дуже великі зміни частоти вибірки досить ефективно. Їх нижня сторона полягає в тому, що вони по суті є ефективною реалізацією фільтра прямокутного каскадного прямокутника, тому у них є всі недоліки прямокутних фільтрів, як обговорено вище. Інтерполяторам CIC, як правило, завжди передує компенсуючий фільтр FIR, який попередньо спотворює сигнал, щоб скасувати спотворення, введені CIC. Якщо зміна швидкості вибірки досить велика, вартість фільтра попереднього спотворення варто.


Фантастичне опитування містера Джима. Щоб додати до вашої категорії вищого порядку, я вважаю, що це також називається "поліноміальною регресією". Враховуючи конкретний набір точок, ми обчислюємо найкраще відповідне лінійку, параболу, кубічний поліном вищого порядку. Отримавши рівняння, ми можемо легко зрозуміти, що таке проміжні точки.
Спейсі

Запитання: 1) Мені не зовсім зрозуміло останнє абзац частини FIR Filter. Ви згадали, що 2-й і 3-й виходи, що відповідають 1-му вхідному зразку, використовують фільтрувальні стрічки 1, 4, 7, а потім 2, 5, 8. Однак ви також згадуєте, що вони всі нулі ... тому не 2-й і 3-й вихід вибірки просто нулі в цьому випадку? 2) Цей "Інтерполяційний фільтр FIR", чи виглядає він так, як, скажімо, [1 0 0 3,2 0 0 -2,1 0 0 1,1 0 0] для m = 3? (Числа складаються).
Спейсі

@Mohammad Я відредагував відповідь. Я сподіваюся, що це допомагає. І дякую за інформацію про поліномні регресії.
Джим Клей

1
@endolith Думаю, дві причини: складність, і це має сенс обчислювально лише тоді, коли довжина фільтра перевищує певну кількість (і я не впевнений, що це за число). Підхід FFT справляється дуже добре при роботі з блоками зразків, але якщо ви маєте справу з потоком зразків, вам також доведеться робити перекриття-додавання або перекриття-збереження для збереження безперервності.
Джим Клей

1
@endolith Одним із приємних моментів щодо підходу FFT є те, що використання великого фільтра практично не коштує.
Джим Клей

3

Відповідь Джима це досить добре висвітлює. Усі методи оптимізації відповідають тій же базовій схемі:

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

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

  1. Скільки амплітудних спотворень я можу допустити в оригінальній смузі? Це залежить від частоти?
  2. Мене хвилює фаза в початковій смузі? Якщо вам потрібно підтримувати фазу, вам потрібна лінійна фаза FIR. Якщо не мінімальна фаза, то краще справляється із підтриманням «причинності» та різких наслідків.
  3. Скільки потрібно для придушення дзеркальних зображень? В основному дзеркальні зображення відображатимуться як додатковий шум у базовій смузі.

Нелінійні інтерполятори високого порядку (сплайн, гермітик, Лагранж), як правило, не спрацьовують, оскільки помилка інтерполяції сильно залежить від сигналу і майже неможливо зіставити конкретну вимогу.


Що ви маєте на увазі під "розумінням кращої роботи у підтримці" причинності "?
nibot

0

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

Наприклад, при підвищенні вибірки від 2 кГц до 64 кГц (коефіцієнт 32) ми можемо це здійснити, вставивши 31 нуль між кожною парою вибірки 2 кГц, а потім фільтруючи фільтром FIR, який складається з 32 одиниць, з усіма іншими коефіцієнти нульові.

Враховуючи вибірку та утримування таким чином, це дозволяє легко проаналізувати. Ми можемо отримати частотну характеристику операції вибірки і утримування, взявши перетворення Фур'є прямокутного вікна. Як вказує Джим, перетворення Фур'є прямокутного імпульсу є sincфункцією з лінійною фазою (оскільки прямокутник не зосереджений навколо ).τ=0

Виявляється, ця sincфункція має свої нулі саме в гармоніках нижчої частоти вибірки. У нашому прикладі, що застосовується для збільшення з 2048 Гц до 65536 Гц, частотна характеристика операції вибірки та утримування має нульові значення 2048 Гц, 4096 Гц тощо.

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

З цього я роблю висновок, що будь-який інтерполяційний фільтр, який повністю пригнічує гармоніки вихідної частоти дискретизації, буде виглядати приблизно як "вибір і затримка". Чи це правильно?

Що стосується критеріїв придушення цих гармонік, вибірка і утримання видається оптимальною. Однак його згладжуючі здібності погані, оскільки, окрім гармонічних нулів, його частотна характеристика падає лише на вище старого частоти Найквіста.1/f


Проблема полягає в тому, що нулі дуже вузькі, тому більшість сигналів матиме енергію поза нулями.
Джим Клей

@JimClay, Чи не вузькі нулі ідеально підходять для вбивства гармонік нижчої частоти вибірки? Я погоджуюся, ви також хочете отримати ще кілька полюсів близько 1 кГц, щоб позбутися від частоти зображення. Я думаю, я би розширив своє питання: як можна створити хороший фільтр для інтерполяції?
nibot

Ви розробляєте фільтр низьких частот, смуга пропускання якого включає пропускну здатність вашого сигналу, а смуга зупинки включає псевдоніми, які вводяться під час вибору зразка. Частоти між точкою 3dB сигналу та псевдонімом є вашою перехідною смугою. Якщо у вас запитання "як я сконструювати фільтр низьких частот?", То задайте це в іншому запитанні, і ми можемо обговорити його.
Джим Клей

Я, як правило, розумію, як проектувати фільтри, як правило, розміщуючи полюси і нулі в s-домені явно, а потім перетворюючи їх у фільтри z-домену. Мені було цікаво, чи існують якісь спеціальні хитрощі для інтерполяційних фільтрів. Повідомлення, яке я забираю, полягає в тому, що насправді не існує жодних хитрощів - інтерполяційні фільтри так само, як і будь-який інший тип фільтрів, і їх дизайн - це вибір компромісу між різними міркуваннями (пульсація, фаза, групова затримка, мінімальне ослаблення смуги зупинки, складність обчислень тощо).
nibot

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