1.線性最小二乘法擬合曲線
當用 m 次多項式擬合給定資料時,一般使用函式 polyfit,命令格式為: a=polyfit(x,y,m),輸入引數 x,y為要擬合的資料,m 為擬合多項式的次數,輸出參 數 a 為擬合多項式的係數向量。 多項式在 x 處的函式值 y可以使用函式 polyval,格式為: y=polyval(a,x),a 為向量表示的多項式
x=[1990 1991 1992 1993 1994 1995 1996];
y=[70 122 144 152 174 196 202];
a=polyfit(x,y,1); %根據利潤增長的情況,使用一次線性擬合函式
y97=polyval(a,1997);
y98=polyval(a,1998);
2.最小二乘法優化
常用的求解最小二乘優化的函式 lsqlin,lsqcurvefit,lsqnonlin,lsqnonneg
1)x=lsqlin(c,d,a,b,aeq,beq,lb,ub,x0) ,模型:
例1:
x=[19 25 31 38 44]';
y=[19 32.3 49 73.3 97.8]';
r=[ones(5,1),x.^2]; %擬合形如 y=a+b*x^2 的多項式,如果擬合的多項式的形式為 y=a0+a1*x+a2*x^2,則 r 應該寫成 r=[ones(5,1),x,x.^2]
ab=lsqlin(r,y); %計算多項式的係數
x0=19:0.1:44;
y0=ab(1)+ab(2)*x0.^2;
plot(x,y,'o',x0,y0,'r') %繪製對比曲線檢視結果
2)lsqcurvefit 函式求解的數學模型為
x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options);
fun 引數是定義函式 f(x,xdata)的 m 文 件,
x0 為初始點,xdata 是輸入資料,ydata 是觀測資料,
它們都是向量或者矩陣,f(x,xdata) 的維數和 ydata 一致
1)首先編寫 m 檔案,定義擬合函式
function y=fun(k,xdata)
f=exp(-k(1)*xdata(:,1)).*sin(k(2)*xdata(:,2))+xdata(:,3).^2;
end
2)呼叫函式 lsqcurvefit
x0=[23.73 5.49 1.21;…]; %x0 是 25 行 3 列的輸入樣本
y0=[15.02;….]; %y0 是 25 行 1 列的觀測值
k0=rand(2,1); %初始化待求引數的值
lb=zeros(2,1);
ub=[20;2]; %給定引數的上下界,沒有邊界時用表示
k=lsqcurvefit(@fun,k0,x0,y0,lb,ub)
clear
x0=-10:0.01:10;
y0=normpdf(x0,0,1); %計算標準正態分佈密度函式在 x0 處的取值
f=@(xs)1/sqrt(2*pi)/xs(2)*exp(-(x0-xs(1)).^2)/xs(2)^2/2-y0; %定義函式
xs0=rand(2,1);%非線性擬合要有初始值
xs=lsqnonlin(f,xs0);
matlab 資料擬合
polyfit x,y,n 多項式擬合,返回降冪排列的多項式係數。polyval p,xi 計算多項式的值 function example x y p polyfit x,y,3 xi 0 0.2 10 yi polyval p,xi plot xi,yi,x,y,r end 也可以用plot x...
MATLAB資料擬合
資料擬合的目的是使用乙個較為簡單的函式去逼近乙個複雜的 未知的函式,在matlab中資料擬合的原理是最小擬合的最小二乘原理,其中polyfit與polyval是最基本的擬合方法,除此之外,matlab還提供了更為直接簡單的資料擬合工具,cftool,下面舉乙個例子,介紹這兩種資料擬合的方法。資料表 ...
matlab 資料擬合
資料擬合又稱曲線擬合,俗稱拉曲線,是一種把現有資料透過數學方法來代入一條數式的表示方式。科學和工程問題可以通過諸如取樣 實驗等方法獲得若干離散的資料,根據這些資料,我們往往希望得到乙個連續的函式 也就是曲線 或者更加密集的離散方程與已知資料相吻合,這過程就叫做擬合 fitting a polyfit...