Algunos años atrás utilice la transformada rápida de Fourier para una tarea del curso de señales. Realice varios experimento incluyendo la determinación del espectro de un sensor de temperatura LM35, todo lo hice en matlab (incluyendo la toma de datos por el canal RS232). Acá los códigos que elabore en sus momentos espero sirvan.
N1 = 2048;
% Datos de tensión capturados por el lm35
%h = [0.229 0.2101 0.1466 0.229 0.2101 0.2101 0.229 0.1466 0.2101 0.2101];
%h = [0 -0.04785 -0.09569 -0.11962 -0.14354 -0.1555 -0.16746 -0.17943 -0.19139 -0.20335 -0.21531 -0.22727 -0.26316 -0.27512 -0.311 -0.33493 -0.35885 -0.28708 -0.311 -0.20335 -0.17943 -0.09569 -0.07177 -0.03589 0 0.035885 0.07177 0.095694 0.107656 0.119617 0.131579 0.155502 0.179426 0.191388 0.203349 0.2272730,239234 0.263158 0.27512 0.311005 0.334928 0.358852 0.34689 0.334928 0.239234 0.119617 0.107656 0.07177 0.011962 0];
h = [0.00000 -0.00120 -0.00478 -0.00837 -0.01077 -0.01316 -0.01675 -0.01914 -0.02033 -0.02153 -0.02273 -0.02333 -0.02392 -0.02392 -0.02392 -0.02333 -0.02273 -0.02273 -0.02033 -0.01555 -0.01196 -0.00718 -0.00478 -0.00120 0.00000 0.00359 0.00718 0.00957 0.01196 0.01555 0.01675 0.01914 0.02153 0.02213 0.02273 0.02392 0.02512 0.02512 0.02512 0.02512 0.02392 0.02392 0.02333 0.02333 0.01914 0.01555 0.01196 0.00957 0.00359 0.00000];
%F1 = [0: N1-1] / N1;
%plot(h)
FS = 15000;
%FS = 2.9412e+003
LONGITUD = 50;
t = 1/FS;
x = [0 : LONGITUD - 1]*t;
%h = sin(2*pi*100*x) + sin(2*pi*50*x);
%F1 = [-N1 / 2 : N1 / 2 - 1] / N1;
%H = abs(fft( h, 256));
%L = linspace(0, 300, 64);
%plot(L, H(1:64))
%H1 = fftshift(H);
%plot (F1, H1)
%plot( F1 , H)
%NFFT = 2^nextpow2(LONGITUD);
NFFT = 50;
Y = fft(h,NFFT)/LONGITUD;
f = FS/2*linspace(0,1,NFFT/2);
% se gráfica sólo una banda de espectro de amplitud
stem(f,2*abs(Y(1:NFFT/2)))
Para el caso de la función coseno un ejemplo de la FFT
n = 0: 1: 30;
x = cos(2*pi*(n)/10);
N1 = 64;
N2 = 128;
N3 = 256;
X1 = abs (fft (x, N1));
X2 = abs (fft (x, N2));
X3 = abs (fft (x, N3));
F1 = [0: N1 - 1] / N1;
F2 = [0: N2 - 1] / N2;
F3 = [0: N3 - 1] / N3;
subplot (3,1,1)
plot (F1, X1, '-x'), title ('N = 64'), axis ([0 1 0 20])
subplot (3,1,2)
plot(F2, X2, '-x'), title ('N = 128'), axis ([0 1 0 20])
subplot (3,1,3)
plot(F3,X3,'-x'),title('N = 256'),axis([0 1 0 20])
Voy a buscar el código que adquiría datos vía serial para subirlo.