Matlab 从FFT预测未来值

Matlab 从FFT预测未来值,matlab,Matlab,在附带的代码中,我创建了一个任意复杂的信号发生器(本例中为3个正弦波),并使用它生成256+50个值。然后,我使用前256个值创建一个FFT,绘制它们,然后进行反向FFT,并验证它是否生成原始信号的非常接近的表示。到目前为止一切都很好 我现在想做的是,使用FFT结果,尝试生成不属于FFT数据集的额外50个值。MatLab中有一个直截了当的方法吗 我不确定我如何假设我可以使用每个箱子的中心频率和FFT结果创建一个信号发生器,并以这种方式生成信号,但这看起来确实是一个很大的工作,所以在我走这条路之前

在附带的代码中,我创建了一个任意复杂的信号发生器(本例中为3个正弦波),并使用它生成256+50个值。然后,我使用前256个值创建一个FFT,绘制它们,然后进行反向FFT,并验证它是否生成原始信号的非常接近的表示。到目前为止一切都很好

我现在想做的是,使用FFT结果,尝试生成不属于FFT数据集的额外50个值。MatLab中有一个直截了当的方法吗

我不确定我如何假设我可以使用每个箱子的中心频率和FFT结果创建一个信号发生器,并以这种方式生成信号,但这看起来确实是一个很大的工作,所以在我走这条路之前,我想我会看看是否有一种简单的方法,我只是没有找到

我有MatLab&信号处理和DSP软件包要在这个时候使用

谢谢

FFTsize = 256;
futureSize = 50;
t = 1:FFTsize+futureSize;

F1_bars = 10;
RadPerBar1 = (2*pi)/F1_bars;
L1 = 1;
Offset1 = 0;

F2_bars = 8;
RadPerBar2 = (2*pi)/F2_bars;
L2 = 1;
Offset2 = 0;

F3_bars = 50;
RadPerBar3 = (2*pi)/F3_bars;
L3 = 1;
Offset3 = 0;

Sig = (L1*sin(RadPerBar1*t + Offset1) +...
       L2*sin(RadPerBar2*t + Offset2) +...
       L3*sin(RadPerBar3*t + Offset3));


DataSet = Sig(1:FFTsize);

FFT = fft(DataSet)/FFTsize;
%Suggested by Mad Physicist 
paddedFFT = [FFT(1:ceil(FFTsize/2)) zeros(1, futureSize) FFT(ceil(FFTsize/2)+1 : end)];

IFFT = ifft(FFT)*FFTsize;
%Suggested by Mad Physicist 
IFFT2 = ifft(paddedFFT)*(FFTsize + futureSize);

figure(111);
hold off;
plot(abs(FFT));
hold on;
plot(abs(paddedFFT),'--r');
legend('FFT','Padded FFT','Position','best');
hold off;

figure(110)
hold off;
plot(Sig);
hold on;
plot(IFFT,'--r');
plot(t, IFFT2,'g');
legend('Input Signal','IFFT','Padded IFFT','Position','best');
hold off;

在反转FFT之前,用50个零填充FFT:

futureSize = 50;
paddedFFT = [FFT(1:ceil(FFTsize/2)) zeros(1, futureSize) FFT(ceil(FFTsize/2)+1 : end)];
IFFT = ifft(paddedFFT)*(FFTsize + futureSize);

男孩,我真的很想这样做,但我似乎做得不对。它似乎将原来的256字节信号扩展到新的306字节范围,这对我来说是有意义的。通过填充FFT,我们没有改变bin频率吗?我们只是更慢地生成相同的信号?不管怎样,如果我误解了,请告诉我。ThanksI无法完全确定这是否以这种特定的方式实现,因为仅仅进行DFT和IDFT只是假设周期信号。与此同时,我认为这可能是一个很好的起点。顺便说一下:请不要使用答案中的建议编辑您的原始代码,因为这将更改您提出的问题!关于代码编辑的观点。我不知道如何去问疯狂的物理学家我是否正确地实现了他的想法?代码块是否可插入注释中?链接写道,这是一种非常有趣的方式,似乎确实有效,这可能就是我最终要做的。我需要做更多的研究。谢谢