散点数据的包络线获取(MATLAB) | 您所在的位置:网站首页 › MATLABenvelope函数 › 散点数据的包络线获取(MATLAB) |
在科研数据处理当中,往往会遇到许多不规则的散点数据,通过程序将这些数据的包络线(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; |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |