感觉很像matlab正弦函数拟合,怎样用MATLAB去拟合

matlab函数拟合
在Matlab 6.5以上的环境下,在左下方有一个"Start"按钮,如同Windows的开始菜单,点开它,在目录"Toolboxes"下有一个"Curve Fitting",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。&/P&5f,L6Lp-wY4N]/E &P&
下面给你简单介绍一下它的使用方法。&/P& &P&
首先在Matlab的命令行输入两个向量,一个向量是你要的x坐标的各个数据,另外一个是你要的y坐标的各个数据。输入以后假定叫x向量与y向量,可以在 workspace里面看见这两个向量,要确保这两个向量的元素数一致,如果不一致的话是不能在工具箱里面进行拟合的。&/P& &P&
例如在命令行里输入下列数据:&/P& &P&x=(0:0.02:0.98)';&/P& &P&y=sin(4*pi*x+rand(size(x)));&/P& &P&此时x-y之间的函数近似的为正弦关系,频率为2,但是存在一个误差项。&/P&O2w-b(]zc6|J0U &P&可以通过作图看出它们的大体分布:&/P&{9x7zKgR(y^ &P&plot(x,y,'*','markersize',2);&/P& &P&
打开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现一个Data对话框,在Data Sets页面里,在X Data选项中选取x向量,Y Data选项中选取y向量,如果两个向量的元素数相同,那么Create data set按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时Curve Fitting Tool窗口中显示出这一数据组的散点分布图。&/P& &P&
点击Fitting...按钮,出现Fitting对话框,Fitting对话框分为两部分,上面为Fit Editor,下面为Table of Fits,有时候窗口界面比较小,Fit Editor部分会被收起来,只要把Table of Fits上方的横条往下拉就可以看见Fit Editor。在Fit Editor里面点击New Fit按钮,此时其下方的各个选框被激活,在Data Set选框中选中刚才建立的x-y数据组,然后在Type of fit选框中选取拟合或回归类型,各个类型的拟合或回归相应的分别是:&/P&H M_:r)F k &P&Custom Equations
用户自定义函数&/P& d/pMOu Cp &P&Expotential
e指数函数&/P&lOdjl"lW\ &P&Fourier
傅立叶函数,含有三角函数&/P& &P&Gaussian
正态分布函数,高斯函数&/P& &P&Interpolant
??(不好意思,不知道对应的术语是什么)含有线性函数,移动平均等类型的拟合&/P&%z+c.b]"}??@n9P &P&Polynomial
多项式函数&/P&UO#K7R1G1q r`-a2I &P&Power
幂函数&/P&Mx [ _.|/i7j &P&Rational
有理函数(不太清楚,没有怎么用过)&/P& &P&Smooth Spline
??(光滑插值或者光滑拟合,不太清楚)&/P& &P&Sum of sin functions正弦函数类&/P&5l*k.Xf*R:g &P&Weibull
威布尔函数(没用过)&/P& &P&
不好意思,没有学过数理统计,所以很多东西都是用了才知道,翻译也就不太准确。不过在Type of fit选框下方有一个列表框,基本上各个函数类里的函数都写成解析式列在下方以供选择,所以找合适的函数还是比较容易的。&/P&"^sw|!Z!B0JBAe
分享这篇日志的人也喜欢
新人求关注~
热门日志推荐
人人最热标签
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字
文化部监督电子邮箱:wlwh@··
文明办网文明上网举报电话: 举报邮箱:&&&&&&&&&&&&
请输入手机号,完成注册
请输入验证码
密码必须由6-20个字符组成
下载人人客户端
品评校花校草,体验校园广场扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
matlab 三角函数拟合现有一些数据,通过散点图来看可用三角函数拟合,提出的函数为y=b1+b2*sin(b3*x+b4),如何用matlab来做回归以确定参数b1,b2,b3,b4的值,并分析拟合效果好不好.数据如下:x 1940 19411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996y-0.-1.0.0.0.-0.-1.0.0.-1.46704320.1.0.-0.-0.-0.-0.-1.1.0.0.0.-0.0.-0.-0.-0.0.0.0.0.-0.-0.-0.-0.-0.0.0.-0.0.0.-0.-0.-0.0.0.-0.-0.1.0.0.-0.-0.-0.-0.0.-4.
扫二维码下载作业帮
1.75亿学生的选择
到cftool工具里去拟合,里面有现成的函数让你选
为您推荐:
其他类似问题
扫描下载二维码查看: 11695|回复: 11|关注: 0
请教Matlab正弦曲线的拟合问题
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
小女初学matlab。有个问题请教各位师兄、师姐。我是个学生需要处理一组数据,它符合正弦规律的。怎么拟合出一条正弦曲线?
array=[593.0&&201.9&&238.6&&040.9&&401.6&&280.5&&909.7&&107.7&&240.4&&289.0&&441.4&&288.9&&332.2&&938.0&&129.4&&313.3&&609.7&&479.1&&409.5&&468.1&&797.9&&568.1&&746.3&&385.2&&330.7&&567.3&&550.3&&944.5]
怎么将它拟合出一条正弦曲线?请各位帮帮忙!!!
MATLAB 数学、统计与优化版块优秀回答者
关注者: 17
回复 1# jingematlab 的帖子
拟合至少要求是点吧。也就是得知道x和y的坐标。。你这就是行数。。拟合不了吧。。
<h1 style="color:# 麦片财富积分
关注者: 7
建议你用 matlab 拟合工具箱
<h1 style="color:# 麦片财富积分
关注者: 8
试试1stOpt:
Function y=a+b*sin(c*x+d);
D
1 29996.9
2 32593.0
3 30157.1
4 28201.9
5 27121.0
6 27238.6
7 25398.6
8 25040.9
9 25040.9
10 25401.6
11 24264.7
12 24280.5
13 24167.5
14 23909.7
15 24372.4
16 24107.7
17 23987.5
18 24240.4
19 24102.3
20 24289.0
21 24451.6
22 25441.4
23 26749.3
24 26288.9
25 25983.9
26 27332.2
27 29499.6
28 28938.0
29 29311.3
30 31129.4
31 31898.2
32 31313.3
33 30530.6
34 32609.7
35 33567.5
36 31479.1
37 32567.0
38 32409.5
39 31978.7
40 31468.1
41 30687.1
42 31797.9
43 31465.3
44 29568.1
45 30764.9
46 29746.3
47 27477.7
48 29385.2
49 28014.4
50 26330.7
51 28214.6
52 25567.3
53 28120.6
54 24550.3
55 25553.5
56 23944.5
复制代码
<h1 style="color:# 麦片财富积分
回复 2# zhanglu 的帖子
额····怎么说呢,我想要的就是用这些数据拟合出一条正弦曲线。实际这些点应该是符合正弦规律的,用这些点拟合出一条正弦曲线来。我不知道是用最小二乘法、还是什么方法。注:不是多项式拟合,是正弦拟合。
<h1 style="color:# 麦片财富积分
工具箱中不能用y=a*sin(b*x+c)+d,我想拟合出一条正弦曲线,而不是多项式。这些点也应该是符合正弦规律的······。我初学matlab,不知道我这样解释是不是能实现?或者我的形容很不专业,还请各位见谅!
<h1 style="color:# 麦片财富积分
回复 5# jingematlab 的帖子
你好,我也想知道这个怎么弄,呵呵,你知道源程序了吗?谢谢。。。
<h1 style="color:# 麦片财富积分
关注者: 1
function coef=cf_sin(s)
%已知一个序列,用正弦曲线f(x)=a*sin(2*pi*w*t+c)+d拟合
xdata=1:length(s)% xdata:横坐标
%对初始值的预测
T=length(s)%假设用的是一个周期的正弦波拟合,只是猜测值
d=mean(s);
coef=lsqcurvefit(@(coef,xdata) coef(1)*sin(2*pi*coef(2)*xdata+coef(3))+coef(4),[A,w,c,d],xdata,s);
运行命令 coef=cf_sin(array) 即可
<h1 style="color:# 麦片财富积分
sdauanmeng 发表于
你好,我也想知道这个怎么弄,呵呵,你知道源程序了吗?谢谢。。。
你好!请问你的问题解决了吗?我也有这个问题,请问能不能给我发下程序,谢谢!!
<h1 style="color:# 麦片财富积分
站长推荐 /3
使用MATLAB和Simulink进行软件无线电设计
Powered bymatlab中曲线拟合问题---使用指定函数进行曲线拟合
&&&&[函数命令] lsqnonlin
[调用格式] x=lsqnonlin(fun,x0)
x 为返回拟合参数;fun 为拟合曲线对应的函数,对应函数文件应保存在工作目录下、并针对所有数据点(因而输入数据在 fun 中定义);x0 为初始值(初始值一定要给fun中未知数x个数相等,即与返回拟合参数的个数相等,初始值可以任意给定,我是赋值1,me注解)。
我的刚度啮合计算实例:
Data =[1,0..............................0576];t=Data(:,1);y=Data(:,2);figure(1)plot(t,y,'g*');x0=[1 1 1 1 1 1 1 1 1 1 1 1 1];x=lsqnonlin('gdnh',x0)y1=y(1);w=2*pi/30;y=x(1)+x(2)*cos(w*t+x(3))+x(4)*cos(2*w*t+x(5))+x(6)*cos(3*w*t+x(7))+x(8)*cos(4*w*t+x(9))+x(10)*cos(5*w*t+x(11))+x(12)*cos(6*w*t+x(13));plot(t,y,'bo-');
%定义 gdnh 函数(下述代码另存为工作目录下的 gdnh.m 文件)function f = gdnh(x,Data)Data =[1,0..............................0576];
t=Data(:,1);y=Data(:,2);t1=t(1);w=2*pi/30;开始没有考虑周期的问题,即周期是下面图像的长度,30个长度z=x(1)+x(2)*cos(w*t+x(3))+x(4)*cos(2*w*t+x(5))+x(6)*cos(3*w*t+x(7))+x(8)*cos(4*w*t+x(9))+x(10)*cos(5*w*t+x(11))+x(12)*cos(6*w*t+x(13));f= z-y;
图像结果如下:
书中的例子:
请各位遵纪守法并注意语言文明}

我要回帖

更多关于 matlab拟合正弦曲线 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信