NTFT
1
Wei Cheng发了一篇文章,提出了一种可以用于模板匹配的波形相似性比较方法,道爷让咱学习一下,乍一听还是挺有用的,如果这个方法好用,我还是可以直接拿来写两篇文章的。
2
前言
1 | We propose a new correlation function called the similarity coefficient (SC) based on the normal time–frequency transform (NTFT) to evaluate the similarity between two non-stationary seismic signals as a function of the delay time. The SC is defined in the time–frequency spectrum of the NTFT, and the instantaneous phase and amplitude of each frequency component in a signal are used to calculate the SC. Our simulation experiments demonstrate that the SC method can effectively recognize similar signals compared to the conventional normalized cross-correlation coefficient (NCC) under high background noise conditions. The SC presents good robustness in identifying similar signals and performs well in the case of an extremely low signal-to-noise ratio (SNR), which makes it suitable for detecting weak seismic signals concealed by noise. |
正文
老的cc
作者表示这是在时域中计算,相当于在频率域做个交叉谱,然后傅里叶反变换回去;认为对高信噪比的信号效果好,但是对于信噪比比较低的信号常常会有误检测按照在DAS中的结果,我认为是对检测模板要求高,对待检测目标要求比较低作者又提到GCC,觉得这玩意儿对非高斯的噪声(风、交通和风暴)没啥用,而且地震信号是非平稳信号,经典傅里叶变换不包含时间信息。之后是小波,小波可以用于非平稳信号的处理,但是很依赖小波基
NTFT
过程太复杂了,我看看有没有其他地方有解释
找到了稍早前的文章,是作者的导师写的,中文好耶!!!
啊,太麻烦了,我放弃了,直接重构代码吧
3
NTFT matlab
略,不知道有没有开源
NTFT python
1 | import math |
实际测试
基础信号测试
单色正弦函数
对于一个正弦函数,我通过左右补齐来构建测试序列,然后用这个正弦函数当作模板信号。这里添加高斯噪声来模拟含噪信号,噪声大小通过sigma函数来控制。为了表征这种方法的检测能力与传统互相关函数的检测能力,我使用两个标量:
1:互相关序列(valid)的最大值
2:李泽锋在2018年pushing….那篇文章中提到的:
测试结果中,这两个量越大越好:1表示互相关程度高,2表示在序列中有一部分显著高。
这里可以看出,虽然在不加噪声时,二者的最大互相关值都是1,但是随着噪声的添加,STFT的最大相关值急速下降,但是传统cc表现出缓慢下降的趋势。同时按照李泽锋的计算方法,也说明传统互相关方法能够更好的区分开目标信号和噪声信号,以下各个信号基本都是一样的结果,我就不再解释了
低频雷克子波
高频雷克子波
这里还是很有意思的,对于高频的雷克子波,stft的劣势就不太明显了
但是我突然想起来,这个结果是否与高低频存在着关联
复合波形
真实波形
其实在真实波形这里,很能说明问题,stft的表现没有传统cc强
速度测试
在应对一定同等长度信号时,STFT(左)的效率不及传统CC的千分之一,这是传统CC的巨大优势。也表明了STFT的利用前景堪忧
结语
虽然测试还没做完,应该添加各个频率的测试,但是目前来看,这个方法很可能利用前景堪忧
把代码就放在这里了,因为是通过别人的matlab改的,就加个密码了
分享名称:stft.txt
分享链接:https://files.gemini-hao.top/#s/8H0NNRPA
访问密码:*