Зсув сигнал на частку вибірки


9

У мене є сигнал із зразком часу 0,5 мікросекунди, і я хотів би перенести цей сигнал на частку часу вибірки, скажімо, на 3 наносекунди.

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

Для регулярного зсуву сигналу для цілих вибірок я реалізував це, перемістивши сигнал на необхідну кількість вибірок і додавши нулі на початку. Чи правильний такий підхід?

Відповіді:


13

Є хороша оглядова стаття, що з’явилася в 1996 році в журналі IEEE Signal Processing Magazine: Розщеплення затримки одиниці: інструменти для дробового фільтра затримки . Приємно в тому, що є також набір відповідних файлів Matlab . Ці підпрограми дозволять розробити таку систему.

Що стосується зміщення на цілу кількість вибірок, то, що ви зробили, очевидно правильно.


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

2

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

Інтерполяція Лагранжа також може бути вартим того, щоб розглянути btw, якщо лінійна інтерполяція недостатньо хороша. http://blog.demofox.org/2015/07/08/lagrange-interpolation/


Герміт може бути кращим, ніж Lagrange, але якщо у вас є доступ до MATLAB (або програми проектування фільтрів FIR), ви можете створити собі інтерполятор "багатофазного фільтрувального банку", в якому у вас є набори коефіцієнтів для різних, рівномірно розташованих, дробові затримки. виберіть дві дискретні дробові затримки, найближчі до заданої дробової затримки, та лінійно інтерполюйте між ними.
Роберт Брістоу-Джонсон

0

Це можна зробити за допомогою функції 'delayseq' в MATLAB. Ця функція може перенести сигнал у дробові вибірки. Ви можете записати кількість зразків, які ви хочете змінити, або кількість часу затримки. Але важливо, що потрібно помітити, це те, що сигнал, що затримується, має таку ж довжину, що і вихідний сигнал, тому, якщо ви не хочете усікати сигнал, спочатку використовуйте нульову підкладку, а потім затримку. https://in.mathworks.com/help/phased/ref/delayseq.html

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