Sposta un segnale per frazione di un campione


9

Ho un segnale con un tempo di campionamento di 0,5 micro secondi e vorrei spostare questo segnale di una frazione del tempo di campionamento, diciamo di 3 nano secondi.

Ho letto alcune risorse online sul filtro del ritardo frazionario e sull'uso di FFT e IFFT per eseguire tale ritardo. Qualcuno può indicarmi qualche teoria su questo o darmi un'idea su come implementarlo.

Per lo spostamento regolare del segnale per campioni interi, l'ho implementato spostando il segnale del numero richiesto di campioni e aggiungendo zeri all'inizio. Questo approccio è corretto?

Risposte:


13

C'è un buon articolo di sintesi che è apparso nel 1996 sulla rivista IEEE Signal Processing: Suddivisione del ritardo dell'unità: strumenti per la progettazione del filtro di ritardo frazionario . La cosa bella è che c'è anche una serie di file Matlab correlati disponibili. Queste routine ti permetteranno di progettare un tale sistema.

Per quanto riguarda lo spostamento di un numero intero di campioni, quello che hai fatto è ovviamente corretto.


Ho solo sfogliato il documento, quindi non sono sicuro che sia esplicitamente presente, ma il ritardo frazionario è correlato alla derivata frazionaria, che generalizza l'ennesima derivata in ordine arbitrario.
soultrane il

2

Oltre a fare soluzioni di tipo fft puoi anche usare l'interpolazione, il tipo specifico di interpolazione che è appropriato si baserebbe ovviamente sulle tue esigenze! In passato l'interpolazione lineare ha funzionato bene con effetti di flangia, ma il tuo chilometraggio può variare.

L'interpolazione di Lagrange potrebbe anche valere la pena di esaminare btw, se l'interpolazione lineare non è abbastanza buona. http://blog.demofox.org/2015/07/08/lagrange-interpolation/


Hermite potrebbe essere migliore di Lagrange, ma se si ha accesso a MATLAB (o a un programma di progettazione di filtri FIR), è possibile progettare un interpolatore "banco filtro polifase" in cui sono disponibili set di coefficienti per una varietà di diversi, distribuiti uniformemente, ritardi frazionari. scegli i due ritardi frazionari discreti più vicini al tuo ritardo frazionario dato e interpoli linearmente tra loro.
robert bristow-johnson il

0

Questo può essere fatto usando la funzione 'delayseq' in MATLAB. Questa funzione può spostare il segnale in campioni frazionari. Puoi scrivere il numero di campioni che vuoi spostare o in termini di tempo, la quantità di ritardo che desideri. Ma la cosa importante da notare è che il segnale ritardato ha la stessa lunghezza di quello del segnale originale, quindi se non si desidera troncare il segnale, utilizzare prima lo zero padding e poi delayseq. https://in.mathworks.com/help/phased/ref/delayseq.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.