Ho un segnale di una certa lunghezza, diciamo 1000 campioni. Vorrei estendere questo segnale a 5000 campioni, campionati alla stessa velocità dell'originale (vale a dire, voglio prevedere quale sarebbe il segnale se continuassi a campionarlo per un periodo di tempo più lungo). Il segnale è composto da diversi componenti sinusoidali sommati.
Il metodo che mi è venuto in mente per la prima volta è stato quello di prendere l'intera FFT ed estenderla, ma questo lascia una discontinuità molto forte nel frame 1001. Ho anche considerato di usare solo la parte dello spettro vicino alle cime, e mentre questo sembra migliorare un po 'il segnale, non mi sembra che la fase sia garantita per essere corretta. Qual è il metodo migliore per estendere questo segnale?
Ecco un po 'di codice MATLAB che mostra un metodo idealizzato di ciò che voglio. Naturalmente, non saprò in anticipo che ci sono esattamente 3 componenti sinusoidali, né la loro fase e frequenza esatte. Voglio assicurarmi che la funzione sia continua, che non ci sia un salto mentre passiamo al punto 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);
Fondamentalmente, data la linea verde, voglio trovare la linea blu.