优秀的编程知识分享平台

网站首页 > 技术文章 正文

python 100天 68 利用Python绘制两个波形正弦sin函数相关性

nanyue 2024-10-14 11:33:25 技术文章 10 ℃

首先有两个sin函数的基础变换



这两个正弦波图像的代码如下


'''
Created on 2023年3月9日
@author: admin
'''
import numpy as np
import matplotlib.pyplot as plt
 
np.random.seed(19680801)
dt = 0.01
t = np.arange(0, 30, dt)
nse1 = np.random.randn(len(t)) # white noise 1
nse2 = np.random.randn(len(t)) # white noise 2
 
s1 = np.sin(2 * np.pi * 10 * t) + nse1
s2 = np.sin(2 * np.pi * 10 * t) + nse2

fig, axs = plt.subplots(2, 1)
 
axs[0].plot(t, s1)
axs[0].set_xlim(0, 2)
axs[0].set_xlabel('Time')
axs[0].set_ylabel('s1 and s2')
axs[0].grid(True)

axs[1].plot(t, s2)
axs[1].set_xlim(0, 2)
 
fig.tight_layout()
plt.show()

如何要在一个画布中展示两个正弦函数的图像



则代码只需要在上面的基础上作出修改

fig, axs = plt.subplots(2, 1)
axs[0].plot(t, s1, t, s2)
axs[0].set_xlim(0, 2)
axs[0].set_xlabel('Time')
axs[0].set_ylabel('s1 and s2')
axs[0].grid(True)


那么这两个正弦的基础频率是一样的

只是有一定的差值,那么如何计算它们的相干性呢

振动频率相同、相差恒定的叫做相干性。


两个波彼此相互干涉时,因为相位的差异,会造成相长干涉或相消干涉。假若两个正弦波的相位差为常数,则这两个波的频率必定相同,称这两个波“完全相干”。两个“完全不相干”的波,例如白炽灯或太阳所发射出的光波,由于产生的干涉图样不稳定,无法被明显地观察到。在这两种极端之间,存在着“部分相干”的波。


波与波之间的的相干性可以用相干度(degree of coherence)来衡量。干涉可见度(interference visibility)是波与波之间的干涉图样的辐照度对比,相干度可以从干涉可见度计算出来


cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)
axs[1].set_ylabel('Coherence')

在代码层面只需要一个函数即可cohere详细说明可以看官方文档


相干性的计算公式


那么相干性的应用体现在什么地方呢

首先,我们第一次接触相干性应该是在物理学中波的干涉中的相干波,这里的相干性 (coherence) 指的是,为了产生显著的干涉现象,波所需具备的性质。这个性质就是指两列频率相同,相位差恒定的波,可以产生干涉现象。


信号处理中的狭义定义

在信号处理中,相干性是一种统计数据,可用于验证两个信号或数据之间的关系。它通常用于估算线性系统输入和输出之间的功率传输状况。如果系统函数是线性的,则可以使用它来估计输入和输出之间的因果关系,即因果性。针对某一个频率,其相位差恒定,幅值变化表现一致,说明这两信号中这个频率点的相干性较高。

这段话怎么来理解呢?比如说,以车为载体,人对着车轮子踢了一脚(这是作用力1),坐在车内的人能听到声音(这是声音1),如果计算相干性的话,在声音对应的频率段,其值会非常接近于1,表示两者相干性很高,也就说明,声音的来源是作用力1。

数学定义

用公式来表达两列信号x,y 的相干性计算,如下:

其中Gxy(f ) 为两列信号的互功率谱密度,Gxx(f ) 和Gyy(f ) 则是它们各自的自功率谱密度。

从公式中可以发现,相干性的取值范围是:

一个理想的线性系统,输入与输出的相干性为1,但是在现实世界中,这种线性系统几乎是不存在的,因为任何系统均会存在噪声,所以说,真实的情况是系统的相干性值在[0,1]之间。1为完全相干,0为完全不相干。

另外,想着重说明一点的是,若输入输出信号的相干性在[0,1]之间,那就是系统中混入了噪声,或多或少而已。

举例

通过相干性计算,能准确识别车内噪声的来源。

如上图所示,对静止状态的样品车的车轮进行激励,同时采集悬架处的振动 (X) 与车内驾驶员右耳处的声音 (Y),将这两者进行相干性计算,验证其因果关系。如下左图为悬架上的振动信号频谱,激振器激励出的能量主要集中在10~50Hz,下右图为驾驶员右耳处的声压频谱,在对应频率处产生了较大的激励。

如果把他们放在一起,如上左图,发现激励与响应能对应的很好,再计算两者的相干性,在对应频段 (10~50Hz) 有较高的相干性(图中黑圈)。这就说明,车内的声音,主要就是由车轮经悬架振动传递到车内的,因为车内声音还有部分通过空气传播,所以说相干性是接近于1而不是1。通过这样的过程,就能识别出噪声

Tags:

最近发表
标签列表