Matlab實現最小二乘法準則擬合

2021-08-15 02:22:03 字數 1600 閱讀 5987

資料擬合:

問題的提法:

已知曲線上n個點(xi,yi), (i=1,2,…,n), xi互不相同,尋求乙個函式y=f(x), 使y=f(x)在某種準則下與所有資料點最為接近,即曲線擬合得最好。

基本思路是:

設按此方法得到的函式

若它接近1,表示f(x)能較好的擬合該資料集。

若取:matlab中的多項式擬合函式:polyfit

格式:a=polyfit(x,y,n)

功能:對一組點(x,y)進行n次多項式擬合。

x,y為要擬合的資料, n為擬合多項式的次數,

a為擬合多項式

例4.1  某通訊公司在一次施工中,需要在一段水面寬

20公尺的河底沿直線走向鋪設一條河底光纜,a點表示

光纜入水處,b點表示光纜出水處,c、d點表示河底的光纜的兩個觸底點,在鋪設前對河底地形做了測量,測得一組等分點位置xi處的水深hi,x0位於點a處,x20位於點b處,資料如表(單位:公尺)試估算通過這條河溝所需光纜長度的近似值。

給出一段**:

x=0:1:20;

y=[-9.2,-8.91,-8.02,-7.95,-8.11,-9.05,-10.12,-11.08,-12.25,-13.26,-13.45,-12.62,-11.28,-10.23,-9.25,-7.91,-8.05,-8.86,-9.85,-10.81,-10.96];

polytool(x,y,3)

n=input('擬合次數n=')

format long

p=polyfit(x,y,n) %代表擬合n次多元方程

dp=polyder(p) %積分

x1=0:0.01:20;

y1=sqrt(1+polyval(dp,x1).^2); %代表係數是dp,橫座標x1,他的縱座標

s=trapz(x1,y1)-y(1)-y(end)

答案:光纜總長:46.28m

解釋下裡面的幾個函式:

polyder

% matlab提供了polyder函式多項式的微分。

% 命令格式:

% polyder(p): 求p的微分

% polyder(a,b): 求多項式a,b乘積的微分

% [p,q]=polyder(a,b): 求多項式a,b商的微分

>>polytool(x,y,n)

n是你想最高次擬合為多少,如果是5,就輸入》polytool(x,y,5)

得到的是乙個含有偏差的擬合效果圖,其中圖形中的degree代表可以改變擬合次數

trapz : 採用梯形法求積分,其實就是模擬牛頓解釋積分的過程,一般給一堆點來求

Matlab實現最小二乘法

p polyfit x,y,n 最小二乘法計算擬合多項式係數。x,y為擬合資料向量,要求維度相同,n為擬合多項式次數。返回p向量儲存多項式係數,由最高次向最低次排列。y polyval p,x 計算多項式的函式值。返回在x處多項式的值,p為多項式係數,元素按多項式降冪排序。擬合以下資料 x 12 9...

matlab偏最小二乘法

偏最小二乘是建立表到表的線性擬合關係,然後 的方法 處理高維資料 比如在光譜分析中,x是某物質的光譜樣本構成的訓練集,y是對應的成分資料,x是要 成分的光譜資料 function y5,s pls2 x,y,x y5,s pls2 x,y,x 參考自司守奎教材 偏最小而成回歸章節 x y 為模型生成...

最小二乘法

include stdafx.h include include const int n 2 const int m 5 int sgn double x void lss double g n 1 int xm,int xn,double x m double p,double w m lss函式...