У меня есть сигнал некоторой длины, скажем, 1000 образцов. Я хотел бы расширить этот сигнал до 5000 отсчетов, отобранных с той же частотой, что и оригинал (т. Е. Я хочу предсказать, каким будет сигнал, если я продолжу дискретизировать его в течение более длительного периода времени). Сигнал состоит из нескольких синусоидальных компонентов, сложенных вместе.
Метод, который впервые пришел ко мне, состоял в том, чтобы взять весь БПФ и расширить его, но это оставляет очень сильный разрыв в кадре 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);
В основном, учитывая зеленую линию, я хочу найти синюю линию.