Mam sygnał o pewnej długości, powiedzmy 1000 próbek. Chciałbym rozszerzyć ten sygnał na 5000 próbek, próbkowanych z tą samą prędkością co oryginał (tj. Chcę przewidzieć, jaki byłby sygnał, gdybym kontynuował próbkowanie przez dłuższy czas). Sygnał składa się z kilku połączonych ze sobą elementów sinusoidalnych.
Metodą, która po raz pierwszy do mnie przyszła, było wzięcie całego FFT i rozszerzenie go, ale pozostawia to bardzo silną nieciągłość na klatce 1001. Rozważyłem również użycie części widma w pobliżu pików i chociaż wydaje się nieco poprawić sygnał, nie wydaje mi się, aby faza gwarantowana była poprawna. Jaka jest najlepsza metoda przedłużenia tego sygnału?
Oto kod MATLAB pokazujący idealną metodę tego, czego chcę. Oczywiście nie będę wcześniej wiedział, że są dokładnie 3 składowe sinusoidalne, ani ich dokładna faza i częstotliwość. Chcę się upewnić, że funkcja jest ciągła, że nie ma skoku, gdy przechodzimy do punktu 501,
vals = 1:50;
signal = 100+5*sin(vals/3.7+.3)+3*sin(vals/1.3+.1)+2*sin(vals/34.7+.7); % This is the measured signal
% Note, the real signal will have noise and not be known exactly.
output_vals = 1:200;
output_signal = 100+5*sin(output_vals/3.7+.3)+3*sin(output_vals/1.3+.1)+2*sin(output_vals/34.7+.7); % This is the output signal
figure;
plot(output_signal);
hold all;
plot(signal);
Zasadniczo, biorąc pod uwagę zieloną linię, chcę znaleźć niebieską linię.