如何用matlab并用最小二乘法找出一天的气温变化规律,作图比较?

如何用matlab并用最小二乘法找出一天的气温变化规律,作图比较?,第1张

如何用matlab并用最小二乘法找出一天的气温变化规律?这类我们可以根据已知的数学模型,创建其数学模型函数,然后用lsqcurvefit()最小二乘拟合函数,求出其数学模型的系数。具体 *** 作过程如下:

1、创建模型1(三次函数) T=a+b*t+c*t^2+d*t^3函数,即

func=@(a,t)a(1)+a(2)*t+a(3)*t.^2+a(4)*t.^3

2、初定 a0的初值,如a0=[13,0,0.1,0]

3、使用lsqcurvefit函数,求解系数a

4、求出拟合值,即

T1=func(a,t)

5、使用plot函数,绘制曲线,即

plot(t,T1,'k-')

6、创建模型2(sin函数) 模型2 T=r*sin(pi/14*t+θ)+20函数,即

func=@(a,t)a(1).*sin(pi/14*t+a(2))+20

7、重复2-5的过程

8、比较模型1和模型2的拟合效果。从图形中,我们可以看到模型2的拟合效果比模型1要好得多。

>> fun=inline ('c(1)*sin((pi/12)*t+c(2)))','c','t')

fun =

Inline function:

fun(c,t) = c(1)*sin((pi/12)*t+c(2))

>>t=[0 ,1, 2 ,3, 4 ,5 ,6 ,7, 8 ,9, 10, 11, 12,13 ,14 ,15 ,16 ,17 ,18, 19, 20 ,21, 22,23 ,24]

>>T=[15 ,14 ,14 ,14 ,14 ,15 ,16 ,18 ,20 ,22 ,23, 25 ,28, 31, 32 ,31, 29 ,27 ,25 ,24, 22, 20 ,18 ,17 ,16]

>>c=lsqcurvefit(fun,[0,0],t,T)

Optimization terminated: relative function value

changing by less than OPTIONS.TolFun.

c =

-6.97212793671912 0.76170885656579

T=-6.9721sin((pi/12)t+0.7617)

clear

a=xlsread('data.xls','C2:G37')

n=length(a)

year=a(1,2)

sum=0ii=0

monthcount=0

yearcount=0

for i=1:n

if i ~= length(a)

if a(i,2)==year

if abs(a(i,5))>=9000

ii=ii+1% 异常值个数

else

sum=sum+a(i,5)

monthcount=monthcount+1

end

else

yearcount=yearcount+1

result(yearcount,1)=year

result(yearcount,2)=sum

result(yearcount,3)=monthcount

result(yearcount,4)=ii

year=a(i,2)

if abs(a(i,5))>=9000

ii=1

sum=0

monthcount=0

else

sum=a(i,5)

ii=0

monthcount=1

end

end

else if abs(a(i,5))>=9000

ii=ii+1% 异常值个数

else

sum=sum+a(i,5)

monthcount=monthcount+1

yearcount=yearcount+1

result(yearcount,1)=year

result(yearcount,2)=sum

result(yearcount,3)=monthcount

result(yearcount,4)=ii

end

end

end

sucess=xlswrite('Pre.xls',result)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11917386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存