첨부 코드에서 임의로 복잡한 신호 생성기 (이 경우 3 개의 사인파)를 생성하고이를 사용하여 256 + 50 값을 생성합니다. 그런 다음 첫 번째 256 개의 값을 사용하여 FFT를 만들고 그 다음에 역 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;
내가 완벽하게 확실하지 않다. 그때까지 나는 [이 질문] (http://dsp.stackexchange.com/questions/101/how-do-i-extrapolate-a-1d-signal)이 좋은 출발점 일 수 있다고 생각한다. 그건 그렇고 : ** 답변 **에서 제안을 사용하여 원래 코드를 수정하지 마십시오 ** 당신이 묻는 질문이 변경됩니다! – knedlsepp
코드 편집시 포인트가 적용됩니다. Mad Physicist에게 내가 그의 아이디어를 올바르게 구현했는지 여부를 묻는 방법을 모르겠다. 주석에 코드 블록을 삽입 할 수 있습니까? 링크를 WRT로 이동하는 것은 매우 흥미로운 방법이며 작동하는 것처럼 보이고 결국 내가 끝내는 것일 수 있습니다. 내 부분에 대해 더 많은 연구가 필요합니다. 감사. – LGTrader