Análisis de datos cíclicos con FFT
Puede utilizar la transformada de Fourier para analizar variaciones en datos, como un evento en la naturaleza durante un periodo de tiempo.
Durante casi 300 años, los astrónomos han tabulado el número y el tamaño de las manchas solares utilizando el número relativo de manchas solares de Zurich. Represente el número de Zurich aproximadamente entre los años 1700 y 2000.
load sunspot.dat year = sunspot(:,1); relNums = sunspot(:,2); plot(year,relNums) xlabel('Year') ylabel('Zurich Number') title('Sunspot Data')
Para observar más de cerca la naturaleza cíclica de la actividad de las manchas solares, represente los primeros 50 años de datos.
plot(year(1:50),relNums(1:50),'b.-'); xlabel('Year') ylabel('Zurich Number') title('Sunspot Data')
La transformada de Fourier es una herramienta fundamental en el procesamiento de señales que identifica los componentes de frecuencia en los datos. Utilizando la función fft
, extraiga la transformada de Fourier de los datos de Zurich. Elimine el primer elemento de la salida, que almacena la suma de los datos. Represente el resto de la salida, que contiene una imagen reflejada de coeficientes complejos de Fourier sobre el eje real.
y = fft(relNums); y(1) = []; plot(y,'ro') xlabel('real(y)') ylabel('imag(y)') title('Fourier Coefficients')
Los coeficientes de Fourier por sí mismos son difíciles de interpretar. Una medida más significativa de los coeficientes es su magnitud cuadrada, que es una medida de potencia. Puesto que la mitad de los coeficientes se repite en magnitud, solo necesita calcular la potencia en la mitad de los coeficientes. Represente el espectro de potencia como una función de frecuencia, medido en ciclos por año.
n = length(y); power = abs(y(1:floor(n/2))).^2; % power of first half of transform data maxfreq = 1/2; % maximum frequency freq = (1:n/2)/(n/2)*maxfreq; % equally spaced frequency grid plot(freq,power) xlabel('Cycles/Year') ylabel('Power')
La máxima actividad de las manchas solares tiene lugar menos de una vez al año. Para obtener una vista de la actividad cíclica más fácil de interpretar, represente la potencia como una función de periodo, medida en años por ciclo. La gráfica revela que los picos de actividad de las manchas solares se producen aproximadamente una vez cada 11 años.
period = 1./freq; plot(period,power); xlim([0 50]); %zoom in on max power xlabel('Years/Cycle') ylabel('Power')