计算两个信号的交叉谱密度
结果展示:
完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import numpy as np import matplotlib.pyplot as plt fig, (ax1, ax2) = plt.subplots( 2 , 1 ) # make a little extra space between the subplots fig.subplots_adjust(hspace = 0.5 ) dt = 0.01 t = np.arange( 0 , 30 , dt) # Fixing random state for reproducibility np.random.seed( 19680801 ) nse1 = np.random.randn( len (t)) # white noise 1 nse2 = np.random.randn( len (t)) # white noise 2 r = np.exp( - t / 0.05 ) cnse1 = np.convolve(nse1, r, mode = 'same' ) * dt # colored noise 1 cnse2 = np.convolve(nse2, r, mode = 'same' ) * dt # colored noise 2 # two signals with a coherent part and a random part s1 = 0.01 * np.sin( 2 * np.pi * 10 * t) + cnse1 s2 = 0.01 * np.sin( 2 * np.pi * 10 * t) + cnse2 ax1.plot(t, s1, t, s2) ax1.set_xlim( 0 , 5 ) ax1.set_xlabel( 'time' ) ax1.set_ylabel( 's1 and s2' ) ax1.grid( True ) cxy, f = ax2.csd(s1, s2, 256 , 1. / dt) ax2.set_ylabel( 'CSD (db)' ) plt.show() |
总结
以上就是本文关于Python+matplotlib实现计算两个信号的交叉谱密度实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:https://matplotlib.org/index.html