Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Serie de Fourier

Sobre los modelos de serie de Fourier

La serie de Fourier es una suma de funciones de seno y coseno que describe una señal periódica. Se representa en la forma trigonométrica o en la forma exponencial. La toolbox proporciona esta serie de Fourier trigonométrica

y=a0+i=1naicos(iwx)+bisin(iwx)

en la que a0 modela un término constante (intercepto) en los datos y se asocia con el término coseno i = 0, w es la frecuencia fundamental de la señal, n es el número de términos (armónicos) de la serie, y 1≤ n ≤ 8.

Para obtener más información sobre la serie de Fourier, consulte Análisis y filtrado de Fourier.

Ajustar modelos de Fourier de forma interactiva

  1. Abra la app Curve Fitter escribiendo curveFitter en la línea de comandos de MATLAB®. También puede hacer clic en Curve Fitter dentro del grupo Math, Statistics and Optimization de la pestaña Apps.

  2. En la app Curve Fitter, seleccione los datos de curva. En la pestaña Curve Fitter, en la sección Data, haga clic en Select Data. En el cuadro de diálogo Select Fitting Data, seleccione X data e Y data o simplemente Y data contra un índice.

  3. Haga clic en la flecha de la sección Fit Type para abrir la galería y, luego, haga clic en Fourier dentro del grupo Regression Models.

Fit Options pane for Fourier fit

Puede especificar las siguientes opciones en el panel Fit Options:

  • Especificar el número de términos como un entero positivo dentro del rango [1 a 8]. Observe el panel Results para ver los términos del modelo, los valores de los coeficientes y las estadísticas de bondad de ajuste.

  • De forma opcional, en la sección Advanced Options, especificar los valores iniciales del coeficiente y los límites de restricción o cambiar la configuración de algoritmos. La app calcula los puntos de partida optimizados para los ajustes de Fourier, basándose en el conjunto de datos. Puede anular los puntos de partida y especificar los valores que desee en el panel Fit Options.

Para obtener más información sobre la configuración, consulte Especificar las opciones de ajuste y los puntos de partida optimizados. Para ver un ejemplo en el que se compara el ajuste de Fourier de la biblioteca con ecuaciones personalizadas, consulte Custom Nonlinear ENSO Data Analysis.

Ajustar modelos de Fourier con la función fit

Este ejemplo muestra cómo utilizar la función fit para ajustar un modelo de Fourier a los datos.

El modelo de Fourier de la biblioteca es un argumento de entrada para las funciones fit y fittype. Especifique el tipo de modelo fourier seguido del número de términos, por ejemplo, de 'fourier1' a 'fourier8'.

Este ejemplo ajusta los datos de El Niño-Oscilación del Sur (ENSO). Los datos ENSO consisten en diferencias de presión atmosférica promediadas entre la Isla de Pascua y Darwin, Australia. Esta diferencia impulsa los vientos alisios en el hemisferio sur.

Los datos ENSO son claramente periódicos, lo que sugiere que se pueden describir con una serie de Fourier. Utilice un modelo de serie de Fourier para buscar la periodicidad.

Ajustar un modelo de Fourier de dos términos

Cargue algunos datos y ajuste un modelo de Fourier de dos términos.

load enso;
f = fit(month,pressure,'fourier2')
f = 
     General model Fourier2:
     f(x) =  a0 + a1*cos(x*w) + b1*sin(x*w) + 
               a2*cos(2*x*w) + b2*sin(2*x*w)
     Coefficients (with 95% confidence bounds):
       a0 =       10.63  (10.23, 11.03)
       a1 =       2.923  (2.27, 3.576)
       b1 =       1.059  (0.01593, 2.101)
       a2 =     -0.5052  (-1.086, 0.07532)
       b2 =      0.2187  (-0.4202, 0.8576)
       w =      0.5258  (0.5222, 0.5294)
plot(f,month,pressure)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent data, fitted curve.

Los límites de confianza en a2 y b2 cruzan por cero. Para los términos lineales, no puede tener la certeza de que estos coeficientes difieran de cero, por lo que no le ayudarán con el ajuste. Esto significa que probablemente este modelo de dos términos no sea mejor que un modelo de un solo término.

Periodo de medida

El término w es un periodo de medida. 2*pi/w convierte el periodo en meses, porque el periodo de sin() y cos() es 2*pi.

w = f.w
w = 0.5258
2*pi/w
ans = 11.9497

w está muy cerca de los 12 meses, lo que indica un periodo anual. Compruebe que esto se refleja bien en la gráfica, con picos aproximadamente cada 12 meses.

Ajustar un modelo de Fourier de ocho términos

f2 = fit(month,pressure,'fourier8')
f2 = 
     General model Fourier8:
     f2(x) = 
               a0 + a1*cos(x*w) + b1*sin(x*w) + 
               a2*cos(2*x*w) + b2*sin(2*x*w) + a3*cos(3*x*w) + b3*sin(3*x*w) + 
               a4*cos(4*x*w) + b4*sin(4*x*w) + a5*cos(5*x*w) + b5*sin(5*x*w) + 
               a6*cos(6*x*w) + b6*sin(6*x*w) + a7*cos(7*x*w) + b7*sin(7*x*w) + 
               a8*cos(8*x*w) + b8*sin(8*x*w)
     Coefficients (with 95% confidence bounds):
       a0 =       10.63  (10.28, 10.97)
       a1 =      0.5668  (0.07981, 1.054)
       b1 =      0.1969  (-0.2929, 0.6867)
       a2 =      -1.203  (-1.69, -0.7161)
       b2 =     -0.8087  (-1.311, -0.3065)
       a3 =      0.9321  (0.4277, 1.436)
       b3 =      0.7602  (0.2587, 1.262)
       a4 =     -0.6653  (-1.152, -0.1788)
       b4 =     -0.2038  (-0.703, 0.2954)
       a5 =    -0.02919  (-0.5158, 0.4575)
       b5 =     -0.3701  (-0.8594, 0.1192)
       a6 =    -0.04856  (-0.5482, 0.4511)
       b6 =     -0.1368  (-0.6317, 0.3581)
       a7 =       2.811  (2.174, 3.449)
       b7 =       1.334  (0.3686, 2.3)
       a8 =     0.07979  (-0.4329, 0.5925)
       b8 =     -0.1076  (-0.6037, 0.3885)
       w =     0.07527  (0.07476, 0.07578)
plot(f2,month,pressure)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent data, fitted curve.

Periodo de medida

w = f2.w
w = 0.0753
(2*pi)/w
ans = 83.4736

Con el modelo f2, el periodo w es de aproximadamente 7 años.

Examinar términos

Busque los coeficientes con las mayores magnitudes para encontrar los términos más importantes.

  • a7 y b7 son los mayores. Observe el término a7 en la ecuación modelo: a7*cos(7*x*w). 7*w == 7/7 = ciclo de 1 año. a7 y b7 indican que el ciclo anual es el más fuerte.

  • De forma similar, los términos a1 y b1 dan como resultado 7/1, que indica un ciclo de siete años.

  • Los términos a2 y b2 son un ciclo de 3,5 años (7/2). Es más fuerte que el ciclo de 7 años porque los coeficientes a2 y b2 tienen magnitudes mayores que a1 y b1.

  • a3 y b3 son términos bastante fuertes que indican un ciclo de 7/3 o 2,3 años.

  • Los términos más pequeños son menos importantes para el ajuste, como a6, b6, a5 y b5.

Habitualmente, el calentamiento de El Niño sucede en intervalos irregulares de entre dos y siete años, y dura entre nueve meses y dos años. La duración media del periodo es de cinco años. Los resultados del modelo reflejan algunos de estos periodos.

Definir los puntos de partida

La toolbox calcula los puntos de partida optimizados para los ajustes de Fourier, basándose en el conjunto de datos actual. Los modelos de serie de Fourier son especialmente sensibles a los puntos de partida y puede que los valores optimizados resulten precisos solo para algunos términos en las ecuaciones asociadas. Puede anular los puntos de partida y especificar los valores que desee.

Después de examinar los términos y las gráficas, parece que podría haber un ciclo de 4 años. Intente confirmar esto definiendo w. Obtenga un valor para w, donde 8 años = 96 meses.

w = (2*pi)/96
w = 0.0654

Encuentre el orden de las entradas para los coeficientes en el modelo ('f2') con la función coeffnames.

coeffnames(f2)
ans = 18x1 cell
    {'a0'}
    {'a1'}
    {'b1'}
    {'a2'}
    {'b2'}
    {'a3'}
    {'b3'}
    {'a4'}
    {'b4'}
    {'a5'}
    {'b5'}
    {'a6'}
    {'b6'}
    {'a7'}
    {'b7'}
    {'a8'}
    {'b8'}
    {'w' }

Obtenga los valores de coeficientes actuales.

coeffs = coeffvalues(f2)
coeffs = 1×18

   10.6261    0.5668    0.1969   -1.2031   -0.8087    0.9321    0.7602   -0.6653   -0.2038   -0.0292   -0.3701   -0.0486   -0.1368    2.8112    1.3344    0.0798   -0.1076    0.0753

Defina el último coeficiente, w, en 0,065.

coeffs(:,18) = w
coeffs = 1×18

   10.6261    0.5668    0.1969   -1.2031   -0.8087    0.9321    0.7602   -0.6653   -0.2038   -0.0292   -0.3701   -0.0486   -0.1368    2.8112    1.3344    0.0798   -0.1076    0.0654

Defina los puntos de partida para los coeficientes con el nuevo valor de w.

f3 = fit(month,pressure,'fourier8', 'StartPoint', coeffs);

Represente ambos ajustes para ver que el nuevo valor de w en f3 no produce un mejor ajuste que f2.

plot(f3,month,pressure)
hold on
plot(f2, 'b')
hold off
legend( 'Data', 'f3', 'f2')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Data, f3, f2.

Buscar opciones de ajuste de Fourier

Encuentre opciones de ajuste disponibles con fitoptions(modelname), donde modelname es el tipo de modelo fourier seguido del número de términos, por ejemplo, de 'fourier1' a 'fourier8'.

fitoptions('fourier8')
ans =

        Normalize: 'off'
          Exclude: []
          Weights: []
           Method: 'NonlinearLeastSquares'
           Robust: 'Off'
       StartPoint: [1x0 double]
            Lower: [1x0 double]
            Upper: [1x0 double]
        Algorithm: 'Trust-Region'
    DiffMinChange: 1.0000e-08
    DiffMaxChange: 0.1000
          Display: 'Notify'
      MaxFunEvals: 600
          MaxIter: 400
           TolFun: 1.0000e-06
             TolX: 1.0000e-06

Si quiere modificar las opciones de ajuste como los valores iniciales del coeficiente y los límites de restricción apropiados para sus datos, o cambiar la configuración de algoritmos, vea las opciones para NonlinearLeastSquares en la página de referencia fitoptions.

Consulte también

Apps

Funciones

Temas relacionados