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
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
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.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.
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.
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)
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)
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
yb7
son los mayores. Observe el términoa7
en la ecuación modelo:a7*cos(7*x*w)
.7*w
== 7/7 = ciclo de 1 año.a7
yb7
indican que el ciclo anual es el más fuerte.De forma similar, los términos
a1
yb1
dan como resultado 7/1, que indica un ciclo de siete años.Los términos
a2
yb2
son un ciclo de 3,5 años (7/2). Es más fuerte que el ciclo de 7 años porque los coeficientesa2
yb2
tienen magnitudes mayores que a1 y b1.a3
yb3
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
yb5
.
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 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
fit
|fittype
|fitoptions