如图所示,第一个图的曲线上有两次凹下去,怎样用matlab自动判断这两次凹下去所发生的时间(横坐标是时间)。下面两幅图是我对第一幅图做了小波变换得到的低频和高频部分,如果要自动检测第三幅图的快速抖动部分要怎么做?或者大神有什么其他更好的办法,只要能自动识别凹部就行。注:本来可以人为的用肉眼就可以判断出来,但因为数据量太大,要是人工找的话要花太多时间。
若能给出matlab程序就最好不过了
我来点土办法吧,次序不分先后。
第一幅图:可以把低频滤波得到的数据进行平均时间积分(也就是定例如说0.2秒的时间,积分上限和下限一直在增加),把整个曲线跑一遍。那么这样如果曲线上有个坑的话,这个积分值就会有比较大的下降趋势。所以可以再把平均积分值的数据记录下来,画成曲线,计算各处斜率,斜率变化的地方就是原本曲线上有坑的地方。这些当然都是可以编程序自动完成的。
判断第三幅图:显然在波动比较大的地方,斜率也较大。因此可以编个程序计算每个数据点之间斜率的绝对值,得到一组新的数据。再将这个数据画成曲线,这时波动较大的地方肯定绝对斜率要大很多。这时可以设定一个阈值,绝对斜率曲线超过阈值就判断是波动的地方。
第三幅图:把所有的数值取成绝对值,超过一个阈值(例如0.7)就是有波动的地方。(此方法应该不适用于第一幅图,因为图一不是高频信号)
又是第一幅图:有坑的地方的斜率肯定较大,而且是先很小(负值)再很大。因此可以将每个数据点的与上一个或者几个数据点之间的斜率算出,取绝对值,画曲线,超过一定值的地方就是坑。
本人搞工程的,数学不是很好,上面都是土办法,欢迎更牛的大神提出什么比较”专业“的法子。