estoy jugando con las funciones fft de octava, y no puedo encontrar la manera de escalar su salida: Yo uso el siguiente código (muy corto) para aproximar una función:El uso de GNU Octave FFT funciones
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));
Básicamente, lo que hace es tomar una función, calcular la imagen de un intervalo, fft-it, luego mantener unos pocos armónicos, y obtener el resultado. Sin embargo, obtengo un gráfico que está verticalmente comprimido (la escala vertical de la salida es incorrecta). ¿Algunas ideas?
Olivier, Rock :) Eso es exactamente lo que necesitaba, ¡Gracias! –
Aunque, ¿qué hace el uso del subíndice de corte negativo? –
CFP, ¡te alegra que te guste! '-cutoff' significa el índice de" corte al último ", es decir,' -1' significa el último índice. Por lo tanto, el corte '[size/2, -cutoff]' significa dejar todo a partir de la mitad, excepto el 'cutoff' last. Una forma más ordenada habría sido: 'fourier [cutoff + 1: -cutoff] = 0'. –