最小二乘法matlab代碼 如何用MATLAB做多元函數(shù)的最小二乘法擬合?
如何用MATLAB做多元函數(shù)的最小二乘法擬合?參考代碼%生成測(cè)試數(shù)據(jù)A0=1A1=2A2=3X1=rand(10,10)x2=rand(10,10)y=a0a1*X1 A2*x2%添加隨機(jī)噪聲y=y0
如何用MATLAB做多元函數(shù)的最小二乘法擬合?
參考代碼
%生成測(cè)試數(shù)據(jù)
A0=1A1=2A2=3
X1=rand(10,10)
x2=rand(10,10)
y=a0a1*X1 A2*x2
%添加隨機(jī)噪聲
y=y0.1*randn(size(y))
]%擬合函數(shù)形式
f=@(k,x)k(1)k(2)*x(:,1)k(3)*x(:,2)
x=[X1(:)x2(:)
]k=lsqsurvefit(f,[1,1],x,y(:)
n=Size(x,1)
plot(1:n,y(:),“Bo”,1:n,f(k,x),“R.”)
運(yùn)行結(jié)果
k=
1.0309 1.9782 2.9800
分別對(duì)應(yīng)于A0~A2,表明與原系數(shù)一致。
如何用MATLAB最小二乘法擬合曲線?
例如,如果函數(shù)形式為y=ax^2 BX C,則MATLAB的代碼形式如下:]>> y=[Y1,Y2,Y3
>> P=polyfit(x,y,2)
運(yùn)行后可以得到a,B,C的大小。如果函數(shù)是一個(gè)變量的三次方程,請(qǐng)將polyfit括號(hào)中的數(shù)字改為3。如果它是一個(gè)變量的線性方程,只需將polyfit括號(hào)中的數(shù)字改為1。其他多項(xiàng)式函數(shù)等。
【MATLAB】如何用最小二乘法擬合直線?
以polyfit函數(shù)(多項(xiàng)式擬合,最小二乘法)為例,x=[90919293949596]z=[70122144152174196202]a=polyfit(x,z,1)結(jié)果:a=1.0e03*0.0205-1.75511表示1次多項(xiàng)式(一次為直線,適用于您的情況)a為多項(xiàng)式的系數(shù)向量,從高階項(xiàng)到低階項(xiàng)排列。例如,如果您想使用結(jié)果來(lái)知道x=97時(shí)Z等于多少,那么有兩種方法:直接使用系數(shù)>>A(1)*97 A(2)ans=233.4286或使用多元函數(shù)>>>multivariable(A,97)ans=233.4286
使用多元擬合函數(shù),(多項(xiàng)式擬合,最小二乘法)例如
x=[90 91 92 93 94 95 96
]z=[70 122 144 152 174 196 202
]a=polyfit(x,z,1)
result:
a=
1.0e 03*
0.0205-[1.7551
1表示一次多項(xiàng)式(一次是直線,適用于您的情況)
a是多項(xiàng)式的系數(shù)向量,它是從高階項(xiàng)到低階項(xiàng)的排列,
如果要使用結(jié)果,例如x=97時(shí)Z等于多少
則有兩種方法,
直接使用系數(shù)
>> a(1)*97 a(2)
ans=
233.4286
或使用多元函數(shù)
>>多元函數(shù)(a,97)
ans =
233.4286