Ich bin mit Oktave fft Funktionen zu spielen, und ich kann wirklich nicht herausfinden, wie sie ihre Ausgabe skalieren: Ich verwende den folgenden (sehr kurz) Code, um eine Funktion zu nähern:Benutzung von GNU Octave FFT-Funktionen
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));
Grundsätzlich, was es tut, ist eine Funktion zu nehmen, berechnen Sie das Bild eines Intervalls, fft-it, dann ein paar Oberwellen, und dann das Ergebnis. Aber ich bekomme ein Diagramm, das vertikal komprimiert ist (die vertikale Skala der Ausgabe ist falsch). Irgendwelche Ideen?
Olivier, du rockst :) Genau das habe ich gebraucht, Danke! –
Was macht die Verwendung des Negativ-Cutoff-Indexes? –
CFP, froh, dass es Ihnen gefällt! "-cutoff" bedeutet den Index "cut-off to last", d. h. "-1" bedeutet den letzten Index. Also die Scheibe '[size/2, -cutoff]' bedeutet alles von der Hälfte verlassen, bis auf den 'cutoff' zuletzt. Ein schöner Weg wäre gewesen: 'fourier [cutoff + 1: -cutoff] = 0'. –