小波变换衡量信号相似度

最近做纸币防伪的水印防伪这一块,了解了少量小波变换的知识,本篇文章专业性差,仅作为笔记使用

傅里叶变换

推荐花生油工人的一篇文章,写的非常详实且通俗易懂

如下图,x逆时针旋转90°可以表示为 x*i, x逆时针旋转180°可以表示为x * i^2 即 - x。
在这里插入图片描述
在此基础上,在一个点在复平面螺旋线上的运动,在实部与虚部的投影,分别为余弦函数和正弦函数
在这里插入图片描述
优美的欧拉公式浮出水面~
在这里插入图片描述
当x为Π时:
在这里插入图片描述

正弦波的叠加,也可以理解为螺旋线的叠加在实数空间的投影,无数的正弦波的叠加引出了傅里叶级数公式:

在这里插入图片描述
在这里插入图片描述
将其带入傅里叶级数公式得:
在这里插入图片描述
在这里插入图片描述
F(w)就是傅里叶变换,从信号从时域图转换为频域图。

傅里叶变换处理非平稳信号有先天缺陷。它只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。因此,时域相差很大的两个信号,可能频谱一样。对于突变信号,傅里叶变换存在吉布斯效应,我们用无限长的三角函数怎么也拟合不好突变信号,由此引出小波变换,锵锵!

小波变换

在这里插入图片描述

Ψ (x)是小波函数
python 的 PyWavelets(pywt)库中,

pywt.cwt()

函数用于进行连续小波变换。pywt.cwt(signal, scales, ‘morl’),第一个参数为进行小波变换的信号,第二个参数为小波函数的尺度,第三个参数为指定要使用的小波函数。
常用的小波函数有以下几种:
‘morl’:Morlet 小波函数,常用于时序数据分析,具有良好的时域和频域特性。
‘gaus1’:高斯小波函数,具有类似高斯分布的形状,在某些应用中很有用。
‘haar’:Haar 小波函数,是最简单的小波函数之一,常用于基础的小波分析。
‘dbN’:Daubechies 小波函数,N 表示小波函数的阶数,比如 ‘db4’、‘db6’ 等,这些小波函数具有紧支集和多分辨率分析的性质,适用于信号压缩和去噪等应用。
除了上述几种常用的小波函数外,pywt 还支持其他小波函数,你可以通过查看官方文档或函数的帮助文档来获取更多信息。选择合适的小波函数取决于你的应用场景和分析需求。

import numpy as np
import matplotlib.pyplot as plt
import pywt

signal1 = [···]
signal2 = [···]

# 连续小波变换
coeffs1, _ = pywt.cwt(signal1[50:90], 10, 'morl')  # 对第一个信号进行连续小波变换
coeffs2, _ = pywt.cwt(signal2[50:90], 10, 'morl')  # 对第二个信号进行连续小波变换

# 计算频谱相关性
# [0, 1]表示我们要获取相关系数矩阵中第一行第二列的元素,这个元素就是我们想要的两个信号之间的相关系数。
#  输出
#  [[r11 r12]
#  [r21 r22]]
# 左上角和右下角的元素是 coeffs1 与自身的相关系数,即自相关系数;
# 右上角和左下角的元素是 coeffs1 与 coeffs2 的相关系数,即它们之间的交叉相关系数。
correlation = np.corrcoef(coeffs1, coeffs2)[0, 1]
print(correlation)
# # 绘制结果
# plt.figure(figsize=(10, 5))
# plt.imshow(correlation, cmap='viridis', aspect='auto')
# plt.colorbar(label='Correlation')
# plt.title('Wavelet Transform Correlation')
# plt.xlabel('Time')
# plt.ylabel('Scale')
# plt.show()
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值