matlab集訓10(擬合方法)

2021-09-22 21:31:30 字數 1823 閱讀 1605

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...