数据分析及处理-神经网络.pdf

所需积分/C币:50 2019-09-07 10:28:51 1.67MB PDF
收藏 收藏
举报

以分析的 办法对数据进行分析及处理,主要 包括数据记录、整理、计算、作图、分析等方面,涉及数据运算的处理方法。阐述的数据处理方法有:插值、最小二乘法拟合、灰色预测以及BP 神经网络 预测
以 Lagrange捅值多项式Ln(x)近似f(x)(a≤x≤b),虽然随着节点个数 的增加,Ln(x)的次数n变人,多数情况下误差R(x)=f(x)-L(x)会变小。但 是n增大时,捕值多项式Ln(x)有时会出现大的振荡。理论上,当n→>∞,在[a,b 内并不能保证Ln(x)处处收敛于f(x)。 Runge给出了一个著名的例子 f(x)= x∈[-5,5] (5.1.4 1+x 对于较大的冈,随着多项式次数n的增大,Ln(x)振荡越来越大,事实上可以证 明,仅当x≤3.63时,才有 liml(x)=f(x),m在此区间外,Ln(x)是发散的。 高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。 大家注意到:线性插值、样条插值和三次插值的 MATLAB程序是现成的,可 以调用这些函数实现这些类型的插值,使用起来非常方便,现在分析这些 MATLAB 的插值函数的用法。 51.2 MATLAB计算一维插值 函数 interp1的功能是:求一维分段低次插值问题。一维插值是进行数据分 析和曲线拟合的重要于段。 interp函数使用多项式技术,用分段低次多项式函 数逼近提供数据的内在规律,并计算日标插值点上的插值函数值。常用的调用格 式是: Y=interp1(X0, YO, X, method 其中,H0和为给定数据的矢量,长度相同;X为需要插值点的矢量,Y输出 为需要插值点的插值; method是一·个可选的字符串,指定一种插值方法,具体 可以分别取为: 最近邻插值( method=' nearest'):该方法将插值点的值设置为与已知数据节 点中距离最近点的值。 线性插值( method=' linear):该方法用线性数逼近每对数据节点的内在 规律,并返回需要插值点ⅹ处的相关函数值。简单地说,将每两个相邻的节点 用直线连起来,如此形成的折线就是分段线性插值函数。 注:当节点数越多,分段就越多,插值误差越小。实际上用函数表作插值计 算吋,分段线性插值就足够了,如数学、物理中用的特殊函数表,数理统计中用 的概率分布表等 三次样条插值( method= spline'):该方法用三次样条函数拟合每对数据节 点的内在规律,以 spline函数在插值节点处进行三次样条插值。 另外,Y= spline(X0,Y0,X)也可实现三次样条插值,端点为边界条件。 Spline 函数还可处理上述第一类端点边界条件,将原来的输入数组Y0改为YY0=[aY0 b],这里a,b分别为S'(x0),S(xn) 另外,pp- cape(Ⅺ0,Yo, conds),Y- ppva(pp,Ⅹ)。也能实现三次样条插值 函数 cape的返回值是pp形式,要求插值点的函数值,必须调用函数 ppva。 pυ= cape(X0,YO):使用默认的边界条件,即 Lagrange边界条件。 pp cape(X0,Y0, conds)中的 conds指定插值的边界条件,其值可为: complete':边界为一阶导数,即默认的边界条件; not-a-knot’:非扭结条件 periodic’:周期条件; second:边界为二阶导数,二阶导数的值[0,0 variational’:设置边界的二阶导数值为[0,0。 对于一些特殊的边界条件,详细情况请使用帮助 help cape 汴:许多工程技术中提出的计算问题对插值数的光滑性有较高要求,如飞 机的机翼外形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程 度,不仅要连续,而且要有连续的曲率,这就导致了样条插值的产生。所谓样条 ( Spline)本来是工程设计中使川的一种绘图工具,它是富有弹性的细木条或细 金属条。绘图员利用它把一些已知点连接成一条光滑出线(称为样条出线),并 使连接点处有连续的曲率。数学上将具有一定光滑性的分段多项式称为样条 数。 三次插值( method' pchip'或' cubic'):该方法用 pchip函数对矢量Ⅹ0和 Y0作分段三次 Hermite插值。 以上这几种插值方法在速度、内存和平滑性等方面有差别,使用时可以根据 需要选择。最近邻插值是最快的方法,但是得到的结果平滑性最差;线性插值比 最近邻插值要占用更多的内存,运行时间略长,与最近邻法不同,它生成的结果 是连续的;三次样条插值的运行时间最长,内存消耗比三次插值略少,它生成的 结果平滑性最好;三次插值需要更多内存,而且运行时间比最近邻法和线性插值 的长,但是,使用此插值法时,插值数据及导数是连续的 例1机床加工 待加工零件的外形根据工艺要求由一组数据(ⅪO,Y0)给出(在平面情况下), 用程控铣床加工时每一刀只能沿Ⅹ方向和Y方向走非常小的一步,这就需要从 已知数据得到加工所要求的步长很小的(X,Y坐标。表5.1中给出的X0,Y0 数据位于机翼断面的下轮廓线上,假设需要得到X坐标每改变0.1时的Y坐标 试完成加工所需数据,画出出线,并求出X=0处的出线斜率和13≤X≤15 范围内Y的最小值 表5.1.1已知的数据(X0,Y0) 14 Y001 1.72.02.12.01.8 要求用 Lagrange、分段线性和三次样条三种插值方法计算, 解求解该问题的程序为 lear all. close all 0=[035791112131415 y0[0121.72.02.12.01.81.21.01.6]; 0:0.1:15 yl-lagrange(x0, y0, x) %调用前面编写的 Lagrange插值函数 y2=interp I(x0, yo, x) y3-interpl(x0, yO, x, spline) ppl=cape(xo, yo); y4=ppval(ppl, x) pp2=cape(xo, yO, 'second); y5-ppval(pp2, x); fprint『('比较一下不同插值方法和边界条件的结果:in fprintf('x yl y2 y3 y4 y5n') xianshi=lx, yly2, y3,y4,y57 fprintf(%ft%f\t%ft%ft%ft%fin, xianshi) subplot(2, 2, 1), plot(xo, yO, +, x,y1), titcCLagrangc) subplot(2, 2, 2), plot(x0,y0, + x, y2), title( Piecewise linear,) subplot(2, 2, 3), plot(x0, y0, + x, y3), title( 'Spline subplot(2, 2, 4), plot(x0, yo, I, x, y4), title('Spline2 dyx0= ppva(ender((p1),x0(1)%求x=0处的导数 temp=y3(131:151); index-find(ytemp--min(temp) xymin-Ix(130+index), ytemp(index) 计算结果为 dyxO=0.5007 ximin=13.80000.9828 Lagidriyt Piecewise linear 1 1● 图5.1.1四种插值 可以看出,拉格朗日插值的结果根本不能应用,分段线性插值的光滑性较差 特別是在x=14附近弯曲处),建议选用三次样条插值的结果。 5.1.3 MATLAB计算二维插值 前面阐述的是一维插值问题,即数据节点为一维变量,插值函数是一元函 数(曲线)。若数据节点是二维的,那么插值函数就是二元函数,即曲面。如果 在某区域测量了多个点的高程(节点),为了画出较精确的等高线图,得先插入更 多的点(插值点),计算这些点的高程(插值),这就是二维插值,插值函数就是二 元函数。二维插值在图像处理和数据可视化方面有卡常重要的应用。 MATLAB以 数 interp2来进行二维插值,该函数的调用格式为: z=interp2(X0, Y0, ZO, X, Y, method) 其中,X0,Y0分别为m维和n维向量,表示数据节点,Z0为nxm维矩阵 表示节点值;X,Y为一·维数组,表示需要插值的点,X与Y应是方向不同的向量, 即一个是行向量,另一个是列向量,Z为矩阵,它的行数为Y的维数,列数为X 的维数,表示得到的插值;’ method'为可选参数,它的用法同上面的一维插值类 似。 MATLAB提供了三种不同的插值方法来计算二维插值: 最近邻插值( met hod=' nearest’):该方法用分段常数曲面拟合数据节点的 内在规律,插值点的值是距离它最近点的值。 双线性插值( method-' bilinear'):该方法用双线性曲面拟合数据节点的内 在规律,插值点的值是四个最近点的值的组合。此方法是分段双线性的,比双三 次插值方法快,并且内存消耗更少。 双三次插值( method=' bicubic):该方法用双三次曲面拟合数据节点的内 在规律,插值点的值是16个最近点的值的组合。此方法是分段三次的,结果的 平滑性比前面两种插值的要好。 这些二维插值方法要求X0和Y0数据节点是单调的,即从节点到节点,要么 是递增的,要么是递减的,应该用 meshgrid函数准备这些矩阵。 另外,如果是三次样条插值,可以使用函数 pp=csape( Xo, Y0, Zo, conds, valconds), Z-fnval(pp, X, Y)) 具体使用方法同一维插值类似 例2平板的温度分布 测得平板表面3×5网格点出发的温度如表所示。 表5.1.2平板表血温度 82 81 80 84 79 63 65 81 84828586 试做出平板表面的温度分布曲面的图形。 解先画出原始数据的图形,其程序为: clcar all. closc all V=1:3 temps=8281808284;7963616581;8484828586}; mesh(x, y, temps) 1- “-" 25 图51.2初始数据的图形 其次,在x,ν方向上每隔0.05个单位的地方进行二维插值以平滑数据,程序为: lear all. close all temps=[8281808284;7963616581;8484828586]; x0=1:0.05:5; v0=1:0.05:3; cx cy]=meshgrid(x0,yO) cz=interp(x, y, temps, cx, cy, cubic); mesh(cx, cy, cz) 插值的结果为: 图5.1.3平板温度二维插值分布 例3地形地貌图形的绘制 表5.1.3所列为某次地貌测量所得结果,对一方形区域(x,y方向均为从1~ 10),选择某些地点测量其相对于某水平高度的数据,要求用这些数据尽量准确 地绘制出该地区的地形地貌。 表5.1.3某地区地貌测量结果 6 0.02-0.12 -2.09 -0.58-0.08 20.02 2.38 4.96 0.011.00 -3.04 -0.53 0.10 3.52 5-0.43-1.97 0.77 2.17 9 0.6 2.59 0.30 7-0.09-0.31 4.27 -0.01 8 5.13 7.40 189 0.04 0.58 1.75 -0.11 10 -0.01 0.3 0.01 解此类问题的解决关键是要将未测量地点的高度用数据插值的方法求出 来,然后就可以用 MATLAB绘图方法画出地貌图。该问题的求解程序为: clear all. close all [x,y=meshgrid(I: 10); %构造测量网格 h=(0,0.02,-0.12,0,-2.09.0,-0.58,-0.08,0,0; 0.02,0,0,2.38.0,-4.96,0,0,0,-0.1; 0,0.1,1,0,-3.040,-0.53,0,0.1,0∷ 0,0.0,3.52,0,0,0,0.0,0; 0.43,-1.97,0,0,0,0.77,0,2.17,0,0 0,0.-2.29,0,0.690,2.59,0.0.3,0; 0.09,-0.31,0,0,0,4,0,0,0,-0.01; 0,0.0,5.13,74,0,1.89,0,0.04,0 0.1.0,0.58,0,0,1.75,0,-0.11,0,0; 00.01,0.0.0.30,0.0,0,0.01]; %测量数据点 [xi, yi]=meshgrid(1:0.1: 10); %构造插值网格 hi= 2(x, y, h, xi, yi, spline); %二维插值 surf(hi) %画出地貌图 xlabel('x),ylabel(y ) Zlabel(h") 插值结果为: 图5.1.4插值后的地形地貌 另外,大家要注意的是:插值函数 interp2能够铰好地进行二维插值运算 但是该函数有一个重要的不足,就是它只能处理以网格形式给出的数据。在实际 应用中,大部分问题都是以实测的多组(X0,Y0,Z0)点给出,所以一般不能使用 interp2函数进行二维插值。在 MATLAB里提供了一个更为一般的 griddata插值 函数,可以解决这样的问题,一般的调用格式为 Z= griddata(X0,Y0,Z0,X,Y,‘ method’), 其中,Ⅺ0,YO,Z0是已知样本点坐标,这里并不要求是网格型的,可以是任意分 布的,均由矢量给出。X,Y是期望的插值位置,可以是单个点,可以是矢量或网 格型矩阵,得出的Z应该维数和X\Y一致,表小插值的结果。另外, method指 定的是插值使用的算法,其值可以是以下几种类型 nears t:线性最近项插值。 linear:线性插值(默认项)。 bilinear:双线性插值 cubic:双三次插值。 bicubic:双三次插值 4: MATLAB4.0版本中提供的算法。 例4用随机数据生成地貌图再做插值 解二维散乱数据的插值程序为: ar all close all rand(100,1)*4-2 %产生的随机点是散乱的数据点 y=rand(100,1)*4-2 Z=X.*exp(x.2y.^2); ti=-2:0.25:2; [xi, yi]=meshgrid(ti, ti) zi=griddata(x, y, z, xi,yi); mesh(xi, yi, zi) hold on plot3(xy,∠,o) 结果为 图5.1.5随机数据点的插值 5.1.4高维插值 MATLAB支持三维及三维以上的插值,分别由两数 interp3和 interp实现 高维插值与三维插值类似,这里只介绍三维插值。三维插值函数 Interp3的调用 格式为: V=interp (X0, Y0, Zo, vo, X, Y, Z) V=interp (v0, X, Y, Z V=interp 3(v0, ntimes V=interp 63(..., method 其中,X0、Y0、Z0、V0为具有相同大小的三维数组,[X0,Y0,Z0]为二维数据网 格,V0为数据网格上的函数值;X、Y、Z、V是具有相同大小的三维数组,返回 值V是三维插值网格LX,Y,Z上的函数估计值; method表示不同的插值方法,主 要有川种,与二维插值中的 method类似。 例5在生成的水流数据处利用 interp3进行三维插值 解三维插值程序为 clear all. close all [x,y,z,V]=fow(15); %创建水流效果 [xi,yizi]= meshgrid(1:25:103:25:3,-3:25:3);

...展开详情
试读 43P 数据分析及处理-神经网络.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img
    小小阿彬

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    数据分析及处理-神经网络.pdf 50积分/C币 立即下载
    1/43
    数据分析及处理-神经网络.pdf第1页
    数据分析及处理-神经网络.pdf第2页
    数据分析及处理-神经网络.pdf第3页
    数据分析及处理-神经网络.pdf第4页
    数据分析及处理-神经网络.pdf第5页
    数据分析及处理-神经网络.pdf第6页
    数据分析及处理-神经网络.pdf第7页
    数据分析及处理-神经网络.pdf第8页
    数据分析及处理-神经网络.pdf第9页
    数据分析及处理-神经网络.pdf第10页
    数据分析及处理-神经网络.pdf第11页
    数据分析及处理-神经网络.pdf第12页
    数据分析及处理-神经网络.pdf第13页

    试读已结束,剩余30页未读...

    50积分/C币 立即下载 >