爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9501|回复: 3

[源程序] 用matlab分析水位奇异值

[复制链接]
发表于 2016-4-6 17:17:01 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

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中斜率同时为负的点,得到奇异值所在位置。
附件包括图、代码、注释等,文中代码有地方有误,以附件中代码程序为准。
密码修改失败请联系微信:mofangbao
发表于 2019-3-11 18:58:08 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2020-3-5 16:59:06 | 显示全部楼层
非常全面详细,受教了。给博主点赞。
不过还是有一个小小的问题:
对于用斜率找到的可能奇异点不需要进行进一步的判定吗?例如运用不同日期同一时间的数据取平均,通过可能奇异点偏移均值的大小最终判定是否为奇异点?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2022-2-28 22:41:43 | 显示全部楼层
{:5_217:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表