本文实例讲述了Python实现正弦信号的时域波形和频谱图。分享给大家供大家参考,具体如下:
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
36
37
38
39
40
41
42
43
44
45
46
|
# -*- coding: utf-8 -*-
# 正弦信号的时域波形与频谱图
import numpy as np
import matplotlib.pyplot as pl
import matplotlib
import math
import random
row = 4
col = 4
N = 500
fs = 5
n = [ 2 * math.pi * fs * t / N for t in range (N)] # 生成了500个介于0.0-31.35之间的点
# print n
axis_x = np.linspace( 0 , 3 ,num = N)
#频率为5Hz的正弦信号
x = [math.sin(i) for i in n]
pl.subplot( 221 )
pl.plot(axis_x,x)
pl.title(u '5Hz的正弦信号' ,fontproperties = 'SimHei' )
pl.axis( 'tight' )
#频率为5Hz、幅值为3的正弦+噪声
x1 = [random.gauss( 0 , 0.5 ) for i in range (N)]
xx = []
#有没有直接两个列表对应项相加的方式??
for i in range ( len (x)):
xx.append(x[i] * 3 + x1[i])
pl.subplot( 222 )
pl.plot(axis_x,xx)
pl.title(u '频率为5Hz、幅值为3的正弦+噪声' ,fontproperties = 'SimHei' )
pl.axis( 'tight' )
#频谱绘制
xf = np.fft.fft(x)
xf_abs = np.fft.fftshift( abs (xf))
axis_xf = np.linspace( - N / 2 ,N / 2 - 1 ,num = N)
pl.subplot( 223 )
pl.title(u '频率为5Hz的正弦频谱图' ,fontproperties = 'SimHei' )
pl.plot(axis_xf,xf_abs)
pl.axis( 'tight' )
#频谱绘制
xf = np.fft.fft(xx)
xf_abs = np.fft.fftshift( abs (xf))
pl.subplot( 224 )
pl.title(u '频率为5Hz的正弦频谱图' ,fontproperties = 'SimHei' )
pl.plot(axis_xf,xf_abs)
pl.axis( 'tight' )
pl.show()
|
运行效果:
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/matrix_google/article/details/60964638