J'ai un signal d'une certaine longueur, disons 1000 échantillons. Je voudrais étendre ce signal à 5000 échantillons, échantillonnés au même rythme que l'original (c'est-à-dire que je veux prédire ce que serait le signal si je continuais à l'échantillonner pendant une plus longue période). Le signal est composé de plusieurs composants sinusoïdaux additionnés.
La méthode qui m'est venue en premier était de prendre la FFT entière et de l'étendre, mais cela laisse une très forte discontinuité à l'image 1001. J'ai également envisagé de n'utiliser que la partie du spectre près des pics, et bien que cela semble améliorer quelque peu le signal, il ne me semble pas que la phase soit garantie correcte. Quelle est la meilleure méthode pour étendre ce signal?
Voici du code MATLAB montrant une méthode idéalisée de ce que je veux. Bien sûr, je ne saurai pas à l'avance qu'il y a exactement 3 composantes sinusoïdales, ni leur phase et fréquence exactes. Je veux m'assurer que la fonction est continue, qu'il n'y a pas de saut lorsque nous passons au point 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);
Fondamentalement, étant donné la ligne verte, je veux trouver la ligne bleue.