散点数据的包络线获取(MATLAB) 您所在的位置:网站首页 MATLABenvelope函数 散点数据的包络线获取(MATLAB)

散点数据的包络线获取(MATLAB)

2023-09-04 23:53| 来源: 网络整理| 查看: 265

在科研数据处理当中,往往会遇到许多不规则的散点数据,通过程序将这些数据的包络线(Envelope)进行描述可以更好地展现数据的取值范围。在进行数据统计当中,对于样本数据包络线的描述一般不可或缺。 这里采用MATLAB软件,自己编写了一段描述散点数据包络线的代码,也是我平时使用的代码,与大家交流协同改进。

程序当中变量定义如下:

X:散点数据的横坐标; Y:散点数据的纵坐标; n:需要将包络线进行多项式拟合的阶数; x_min, x_max, x_int:需要进行多项式拟合的坐标下限、上限以及坐标步长; window_n:散点数据窗大小(在正序散点当中的n个值里取极大(极小)值),若n不是散点数据个数的约数,则对数据尾端增加零点使其数量达到n的整数倍。

% Find the boundary of data % X-input x coordinary % Y-input y coordinary % n-polyfit times % x_min,x_max,x_int-range of x and interval of x function [Xup_fit,Yup_fit,Xdown_fit,Ydown_fit,X_up,Y_up,X_down,Y_down]=BD_poly(X,Y,n,x_min,x_max,x_int,window_n) [X2,p]=sort(X); Y2=Y(p); while mod(length(Y2),window_n)~=0 Y2(end+1)=0; X2(end+1)=0; end Y_up=max(reshape(Y2,window_n,length(Y2)/window_n)); for i = 1:length(Y_up) X_up(i)=X2(find(Y2==Y_up(i),1)); end Y_down=min(reshape(Y2,window_n,length(Y2)/window_n)); for i = 1:length(Y_down) X_down(i)=X2(find(Y2==Y_down(i),1)); end [Aup]=polyfit([X_up],[Y_up],n); Xup_fit=x_min:x_int:x_max; Yup_fit=polyval(Aup,Xup_fit); [Adown]=polyfit([X_down],[Y_down],n); Xdown_fit=x_min:x_int:x_max; Ydown_fit=polyval(Adown,Xdown_fit); 算例说明

对于X,Y均为1-5随机均匀随机分布的散点来说,通过程序计算得到的包络线如图: 红线为包络线,蓝线为多项式拟合。

window_n=10,拟合多项式次数为5; 请添加图片描述 window_n=50,拟合多项式次数为5; 请添加图片描述 window_n=100,拟合多项式次数为5; 请添加图片描述 对于 x服从0-100随机分布,y服从公式: y = s i n ( x ) ∗ x y=sin(x)*x y=sin(x)∗x的数据散点来说: window_n=10,拟合多项式次数为5; 请添加图片描述 window_n=50,拟合多项式次数为5; 请添加图片描述 window_n=100,拟合多项式次数为5; 请添加图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有