Mam sygnał o czasie próbkowania 0,5 mikrosekundy i chciałbym przesunąć ten sygnał o ułamek czasu próbkowania, powiedzmy o 3 nano sekundy.
Przeczytałem kilka zasobów online na temat filtrowania ułamkowego opóźnienia oraz na temat używania FFT i IFFT do wykonania takiego opóźnienia. Czy ktoś może wskazać mi jakąś teorię na ten temat lub dać mi pomysł, jak ją wdrożyć.
W celu regularnego przesuwania sygnału dla próbek liczb całkowitych zaimplementowałem to, przesuwając sygnał o wymaganą liczbę próbek i dodając zera na początku. Czy to podejście jest prawidłowe?
źródło
Oprócz robienia rozwiązań typu fft można również używać interpolacji, właściwy rodzaj interpolacji, który jest odpowiedni, będzie oczywiście oparty na twoich potrzebach! Interpolacja liniowa działała w przeszłości dla mnie dobrze z efektami kołnierzowymi, ale przebieg może się różnić.
Interpolacja Lagrange'a może być również warta spojrzenia w btw, jeśli interpolacja liniowa nie jest wystarczająco dobra. http://blog.demofox.org/2015/07/08/lagrange-interpolation/
źródło
Można to zrobić za pomocą funkcji „delayseq” w MATLAB. Ta funkcja może przesunąć sygnał w ułamkowych próbkach. Możesz wpisać liczbę próbek, które chcesz przesunąć, lub pod względem czasu, żądanego opóźnienia. Należy jednak zauważyć, że opóźniony sygnał ma tę samą długość, co sygnał oryginalny, więc jeśli nie chcesz obcinać sygnału, najpierw zastosuj wypełnienie zerowe, a następnie opóźnij sekwencję. https://in.mathworks.com/help/phased/ref/delayseq.html
źródło