У мене є сигнал деякої довжини, скажімо, 1000 зразків. Я хотів би поширити цей сигнал на 5000 зразків, відібраних з тією ж швидкістю, що й оригінал (тобто я хочу передбачити, який би сигнал був, якби я продовжував вибірку його протягом більш тривалого періоду часу). Сигнал складається з декількох синусоїдальних компонентів, доданих разом.
Спочатку до мене прийшов метод взяти весь FFT і розширити його, але це залишає дуже сильну розрив у кадрі 1001. Я також розглядав лише використання частини спектру біля піків, і хоча це здається дещо покращити сигнал, мені не здається, що фаза гарантована правильно. Який найкращий спосіб розширення цього сигналу?
Ось деякий код MATLAB, що показує ідеалізований метод того, що я хочу. Звичайно, я заздалегідь не знаю, що є рівно 3 синусоїдальні компоненти, а також їх точна фаза та частота. Я хочу переконатися, що функція є безперервною, щоб не було стрибка під час переміщення до точки 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);
В основному, з огляду на зелену лінію, я хочу знайти синю лінію.