matlab 多项式拟合
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 03:44:11
matlab 多项式拟合
x=[0 30 60 90 120 150 180 210 240 270 300 330 360]
y=[-0.0167 -1.0927 -1.8725 -2.3586 -2.3061 -1.9576 -0.9574 -0.0080 0.8896 1.3877 1.1139 0.8517 -0.0167]
我想通过y=-0.52-1.90sin(2πt/360-0.079)进行二次多项式拟合
请问高手怎么编码?
x=[0 30 60 90 120 150 180 210 240 270 300 330 360]
y=[-0.0167 -1.0927 -1.8725 -2.3586 -2.3061 -1.9576 -0.9574 -0.0080 0.8896 1.3877 1.1139 0.8517 -0.0167]
我想通过y=-0.52-1.90sin(2πt/360-0.079)进行二次多项式拟合
请问高手怎么编码?
clear;clc
x=[0 30 60 90 120 150 180 210 240 270 300 330 360];
y=[-0.0167 -1.0927 -1.8725 -2.3586 -2.3061 -1.9576 -0.9574 -0.0080 0.8896 1.3877 1.1139 0.8517 -0.0167];
fun=@(a,t) a(1)+a(2)*sind(t+a(3)) %matlab7.0以上版本,否则用inline
%fun=inline('a(1)+a(2)*sind(t+a(3))','a','t')
a0=[-0.5 -1.9 -0.079];
a=nlinfit(x,y,fun,a0)
t=0:5:360;
yf=fun(a,t);
plot(x,y,'o',t,yf)
结果:
fun =
@(a,t) a(1)+a(2)*sind(t+a(3))
a =
-0.5239 -1.8995 -14.2382
x=[0 30 60 90 120 150 180 210 240 270 300 330 360];
y=[-0.0167 -1.0927 -1.8725 -2.3586 -2.3061 -1.9576 -0.9574 -0.0080 0.8896 1.3877 1.1139 0.8517 -0.0167];
fun=@(a,t) a(1)+a(2)*sind(t+a(3)) %matlab7.0以上版本,否则用inline
%fun=inline('a(1)+a(2)*sind(t+a(3))','a','t')
a0=[-0.5 -1.9 -0.079];
a=nlinfit(x,y,fun,a0)
t=0:5:360;
yf=fun(a,t);
plot(x,y,'o',t,yf)
结果:
fun =
@(a,t) a(1)+a(2)*sind(t+a(3))
a =
-0.5239 -1.8995 -14.2382