Main Content

La traducción de esta página está obsoleta. 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 Fitting escribiendo cftool. También puede hacer clic en Curve Fitting en la pestaña de aplicaciones.

  2. En Curve Fitting, seleccione datos de curva (X data e Y data, o solo Y data contra índice).

    La app Curve Fitting crea el ajuste de curva predeterminado, Polynomial.

  3. Cambie el tipo de modelo de Polynomial a Fourier.

Puede especificar las siguientes opciones:

  • Elija el número de términos: de 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.

  • Haga clic (opcional) en Fit Options para especificar los valores iniciales del coeficiente y las cotas de restricción o cambie la configuración de algoritmo.

    La toolbox calcula los puntos de partida optimizados para los modelos de la serie de Fourier, basándose en el conjunto de datos actual. Puede anular los puntos de partida y especificar los valores que desee en el cuadro de diálogo Fit Options (Opciones de ajuste).

    Para obtener más información sobre la configuración, consulte Specifying Fit Options and Optimized Starting Points.

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)

Las cotas 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)

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')

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 las cotas de restricción apropiadas 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

| |

Temas relacionados