功能:傅里叶级数拟合

格式:
[er,w,a0,a,b,l]=FourierFitGA(x,y,n,w0,wMax,wMin,Nbird,LoopSum,Error)
[er,w,a0,a,b,l]=FourierFitGA(x,y,n,w0,wMax,wMin,Nbird,LoopSum)
[er,w,a0,a,b,l]=FourierFitGA(x,y,n,w0,wMax,wMin,Nbird)
[er,w,a0,a,b,l]=FourierFitGA(x,y,n,w0,wMax,wMin)
[er,w,a0,a,b,l]=FourierFitGA(x,y,n,w0,wMax)
[er,w,a0,a,b,l]=FourierFitGA(x,y,n,w0)
[er,w,a0,a,b,l]=FourierFitGA(x,y,n)
[er,w,a0,a,b,l]=FourierFitGA(x,y)

x:需要拟合的矩阵变量
y:与x同维数的需要拟合的矩阵变量
n:拟合变量个数,默认为1.具体含义看说明.
w0:周期相关数据,默认为6.28318530717958
wMax:周期相关数据的上限,默认为12.5663706143592
wMin:周期相关数据的下限,默认为0
Nbird:种群数,默认100
LoopSum:最大循环次数,默认3000
Error:误差控制变量,默认1e-12

er:返回的误差
w:返回的周期相关数据
a0:求得的常系数
a:求得的余弦系数
b:求得的正弦系数
l:返回程序终止时的循环次数

说明:

1、本函数主要是针对如下表达式进行拟合,其中已知数据(x,y)拟合出参数w,a0,a,b

  y=a0+a[1]*cos(w*x)+b[1]*sin(w*x)+a[2]*cos(2*w*x)+b[2]*sin(2*w*x)+……+a[n]*cos(n*w*x)+b[n]*sin(n*w*x)

2、本函数内部调用{nlinFit2<矩阵运算\nlinFit2>}与{SolveEquationGauss<矩阵运算\SolveEquationGauss>}函数

3、注意本函数与{FourierFit<矩阵运算\FourierFit>}函数区别(本函数的周期未知)

4、因为本函数内部做了特殊处理,因此求解时比直接调用相关的非线性拟合函数求解要快!

例子:

x=0:0.2:5;y=4-5.6*sin(3.2*x)+3*cos(3.2*x);//回车执行本两条命令产生数据,这里就假如事先知道数据x,y

[er,w,a0,a,b,l]=FourierFitGA(x,y,1,10)//我们这里设置w初始值为10,(注意默认上限为12.5663706143592)回车得到如下结果
//即得到 y=3.99999997420387+3.00000035327529*sin(3.20000002548315*x)-5.59999981846264*cos(3.20000002548315*x)
er =
[ 8.4483621288E-13 ]
w =
[ 3.20000002548315 ]
a0 =
[ 3.99999997420387 ]
a =
[ 3.00000035327529 ]
b =
[-5.59999981846264 ]
l =
[ 10.0000000000000 ]

