移動最小二乘法

2021-06-18 13:55:59 字數 1626 閱讀 1705

1.擬合函式的建立不同。這種方法建立擬合函式不是採用傳統的多項式或其他函式,而是通過係數向量和基函式來決定在某個x處的值。

2.引入緊支的概念,認為在x處的值y只受到x附近子域內的節點的影響。這個子域稱作是x的影響區域,影響區域外的節點對x處的取值沒有影響。影響區域內的每個節點對x處的取值的影響是不一樣的。所以需要乙個權函式來定義每個節點的影響。

從上述的闡述來看,如果取不同的基函式,不同的權函式,不同的影響區域範圍,可以得到不同的擬合效果。

下面介紹一下演算法:

如果直接求解出a,那麼可以算出在x處的函式值了。

介紹一下權函式:

在影響區域內,權函式非負,並且沿徑向單調遞減,即隨著到當前x處的距離的增加而遞減。比如:

大概的程式流程:

乙個例子的matlab code:

clc;clear; 

%曲線擬合

x=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]; 

y=[0, 4, 5, 14, 15, 14.5, 14, 12, 10, 5, 4]; 

scatter(x,y,'filled'); 

len_x = length(x);

max_x = max(x); 

min_x = min(x);

num = 100; 

delta = (max_x-min_x)/num; 

x_f =; 

f =; 

max_delta = (max_x-min_x)*3/10; 

for i=0:num 

x_val = min_x + i*delta; 

x_f = [x_f,x_val]; 

a = zeros(2,2); 

b = ; 

for j=1:len_x 

s = abs(x(j)-x_val)/max_delta; 

if s<=0.5 

w = 2/3-4*s^2+4*s^3; 

elseif s<=1 

w = 4/3-4*s+4*s^2-4*s^3/3; 

else 

w = 0; 

end 

a = a + w*[1;x(j)]*[1,x(j)]; 

b = [b,w*[1;x(j)]]; 

end 

f =[f,[1,x_val]*inv(a)*b*y']; 

end 

hold on 

plot(x_f,f,'r');

移動最小二乘法

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

最小二乘法

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

最小二乘法

在研究兩個變數之間的關係時,可以用回歸分析的方法進行分析。當確定了描述兩個變數之間的回歸模型後,就可以使用最小二乘法估計模型中的引數,進而建立經驗方程.簡單地說,最小二乘的思想就是要使得觀測點和估計點的距離的平方和達到最小.這裡的 二乘 指的是用平方來度量觀測點與估計點的遠近 在古漢語中 平方 稱為...