求助matlab高手:怎样用matlab自动识别平坦曲线上的凹凸或者快速抖动部分。

如图所示,第一个图的曲线上有两次凹下去,怎样用matlab自动判断这两次凹下去所发生的时间(横坐标是时间)。下面两幅图是我对第一幅图做了小波变换得到的低频和高频部分,如果要自动检测第三幅图的快速抖动部分要怎么做?或者大神有什么其他更好的办法,只要能自动识别凹部就行。注:本来可以人为的用肉眼就可以判断出来,但因为数据量太大,要是人工找的话要花太多时间。
若能给出matlab程序就最好不过了

我来点土办法吧,次序不分先后。

    第一幅图:可以把低频滤波得到的数据进行平均时间积分(也就是定例如说0.2秒的时间,积分上限和下限一直在增加),把整个曲线跑一遍。那么这样如果曲线上有个坑的话,这个积分值就会有比较大的下降趋势。所以可以再把平均积分值的数据记录下来,画成曲线,计算各处斜率,斜率变化的地方就是原本曲线上有坑的地方。这些当然都是可以编程序自动完成的。

    判断第三幅图:显然在波动比较大的地方,斜率也较大。因此可以编个程序计算每个数据点之间斜率的绝对值,得到一组新的数据。再将这个数据画成曲线,这时波动较大的地方肯定绝对斜率要大很多。这时可以设定一个阈值,绝对斜率曲线超过阈值就判断是波动的地方。

    第三幅图:把所有的数值取成绝对值,超过一个阈值(例如0.7)就是有波动的地方。(此方法应该不适用于第一幅图,因为图一不是高频信号)

    又是第一幅图:有坑的地方的斜率肯定较大,而且是先很小(负值)再很大。因此可以将每个数据点的与上一个或者几个数据点之间的斜率算出,取绝对值,画曲线,超过一定值的地方就是坑。

本人搞工程的,数学不是很好,上面都是土办法,欢迎更牛的大神提出什么比较”专业“的法子。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-05
我想这需要c语言编程的知识。
相似回答