MLS 移动最小二乘

1.拟合函数的建立不同。这种方法建立拟合函数不是采用传统的多项式或其他函数,而是通过系数向量和基函数来决定在某个x处的值。

2.引入紧支的概念,认为在x处的值y只受到x附近子域内的节点的影响。这个子域称作是x的影响区域,影响区域外的节点对x处的取值没有影响。影响区域内的每个节点对x处的取值的影响是不一样的。所以需要一个权函数来定义每个节点的影响。

从上述的阐述来看,如果取不同的基函数,不同的权函数,不同的影响区域范围,可以得到不同的拟合效果。

下面介绍一下算法:

Screenshot - 2011_11_20 , 18_43_39

Screenshot - 2011_11_20 , 18_49_01

Screenshot - 2011_11_20 , 18_55_05

如果直接求解出a,那么可以算出在x处的函数值了。

 

介绍一下权函数:

在影响区域内,权函数非负,并且沿径向单调递减,即随着到当前x处的距离的增加而递减。比如:

Screenshot - 2011_11_20 , 19_08_33

Screenshot - 2011_11_20 , 19_09_21

大概的程序流程:

Screenshot - 2011_11_20 , 19_11_08

一个例子的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');

转载于:https://www.cnblogs.com/USTC-fuxm/archive/2011/11/20/2256354.html

移动最小二乘MLS)曲面重构是一种曲线曲面拟合的方法,它是在最小二乘法的基础上进行改进的。通过添加权函数等步骤,MLS可以更好地适应数据点的分布情况,从而实现更准确的曲面重构。\[3\] 在MLS曲面重构中,首先需要对数据点进行采样,并选择适当的权函数。然后,通过计算每个采样点周围的邻域点的权重,确定每个采样点的权重矩阵。接下来,使用最小二乘法来拟合曲面,通过求解线性方程组来确定曲面的系数。最后,根据拟合的曲面系数,可以对新的点进行曲面重构。\[2\] MLS曲面重构方法在计算机图形学、计算机辅助设计等领域有广泛的应用。它可以用于曲面重建、曲面平滑、曲面插值等任务,能够有效地处理不规则数据点集合,并生成平滑的曲面。\[1\] 总之,移动最小二乘MLS)曲面重构是一种基于最小二乘法的曲线曲面拟合方法,通过添加权函数等步骤,可以更好地适应数据点的分布情况,实现准确的曲面重构。它在计算机图形学和计算机辅助设计等领域有广泛的应用。 #### 引用[.reference_title] - *1* [基于移动最小二乘法的曲线曲面拟合(python语言实现)](https://blog.csdn.net/baidu_38127162/article/details/82380914)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [移动最小二乘法(MLS)曲线曲面拟合C++代码实现](https://blog.csdn.net/liumangmao1314/article/details/54179526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值