登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先将数据点导入matlab,此时得到的是一个12*62的矩阵,为了接下来画图和数据处理, 我们将这个矩阵转化为一行即1*744的矩阵。 转化过程如下: H=H’ !H为原矩阵 v=reshape(H,1,744) !将新矩阵命名为v t=743 T=744 !创建两个时间数组方便画图和数据处理 plot(t,v) !得到原始数据资料图 接下来我们通过变率判别法对我们的观察进行验证,变率判别法具体指的是:如果一个点此时刻潮位是增加的,并且上一个时刻潮位是减小的,那么下一个时刻必定也是增加的,或者是如果一个点此时刻潮位是减小的,并且上一个时刻潮位是增加的,那么下一个时刻必定也是减小的。 简单地说就是一点的斜率如果和前后两点都异号,那么这点就是奇异点。我们接下来就利用这个方法验证奇异点。 !对v求斜率 For i=1:743 k(i)=v(i+1)-v(i); !k为斜率 v0=k(2:742) v1=k(3:743) v2=k(1:741) A=v0.*v1 B=v0.*v2 find(A<0&B<0) !找出和前后两点都异号的点 输出的结果为384 602 因为之前的处理,说明385 603的斜率有问题。 385 603的斜率有问题,说明386 604的数据点有问题。 接下来我们用样条插值计算出这两个点的值。 file:///C:/Users/adai/AppData/Local/Temp/ksohtml/wps334A.tmp.jpg 我们选用 384 385 387 388 一共四个点计算386的值: x=[384 385 387 388] y=[3280 4350 6130 6510] a=386 yl=spline(x,y,a) 得到386点的值 5355 同理我们得到 604 点的值为 2033. v(386)=5355 v(604)=2033 难点:判断某点斜率是否和前后都不同。 解决办法:将每个点的斜率先于前面一点的斜率相乘得到数组A,再将每个点的斜率与后面的点的斜率相乘得到数组B,接着用find命令找出AB中斜率同时为负的点,得到奇异值所在位置。 附件包括图、代码、注释等,文中代码有地方有误,以附件中代码程序为准。 |