作业帮 > 综合 > 作业

Matlab如何根据一组数据拟合出包含三角函数的曲线?

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 14:28:32
Matlab如何根据一组数据拟合出包含三角函数的曲线?
m程序:
clear all
xdata=[6.95 12.19 18.03 26.17 32.77 41.38 49.89 61 70.04 84.07 92.95 102.1 111.3 119.87];
ydata=[0.6 0.9 1.92 4.1 5.52 7.6 9.52 11.33 11.56 9.32 8 5.59 3.2 1.39];
f=@(B,xdata)B(1)*(1-cos(B(2)*xdata));
[x,resnorm]=lsqcurvefit(f,[10,1],xdata,ydata);

用lsqcurvefit会出现提示

Local minimum possible.

lsqcurvefit stopped because the final change in the sum of squares relative to 
its initial value is less than the default value of the function tolerance.

用Curve Fitting Tool工具箱结果如下图所示

图中的黑点即是现有数据,很容易能看出它是一个三角函数半个周期的点截取下来的,实际上也是这样的,黑点数据取自y=5.8*(1-cos(0.0465*x)),为什么不能拟合出这条曲线的参数呢?
Matlab如何根据一组数据拟合出包含三角函数的曲线?
原因是对初值(主要是B(2))非常敏感,很容易陷入局部最优.你可以取初值为[1,0.05]试一下,应该可以得到比较满意的结果.