本文实例讲述了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