我玩倍頻程的FFT功能,並且我真的不能弄清楚如何擴展其輸出:我用下面的(很短)的代碼來近似的函數:使用GNU八度FFT功能
function y = f(x)
y = x .^ 2;
endfunction;
X=[-4096:4095]/64;
Y = f(X);
# plot(X, Y);
F = fft(Y);
S = [0:2047]/2048;
function points = approximate(input, count)
size = size(input)(2);
fourier = [fft(input)(1:count) zeros(1, size-count)];
points = ifft(fourier);
endfunction;
Y = f(X); plot(X, Y, X, approximate(Y, 10));
基本上,它所做的是取一個函數,計算一個區間的圖像,然後保留一些諧波,然後計算結果。然而,我得到了一個垂直壓縮的情節(輸出的垂直範圍是錯誤的)。有任何想法嗎?
Olivier,你搖滾:)這正是我需要的,謝謝! – 2010-05-08 13:03:01
雖然,使用negative-cutoff下標有什麼作用? – 2010-05-08 17:35:29
CFP,很高興你喜歡它! 「cutoff」表示「截止到最後」索引,即「-1」表示最後一個索引。所以切片'[size/2,-cutoff]'意味着將所有內容都從一半中刪除,除了'cutoff'最後。一個更好的方法是:'fourier [cutoff + 1:-cutoff] = 0'。 – 2010-05-08 17:45:47