使⽤python进⾏傅⾥叶变换
⽬录
实验名称
使⽤python进⾏傅⾥叶变换
实验⽬的
1.掌握使⽤matplotlib进⾏绘图的基本步骤
2. 利⽤python程序实现傅⾥叶变换
实验原理
傅⽴叶变换是⼀种分析信号的⽅法,它可分析信号的成分,也可⽤这些成分合成信号。许多波形可作为信号的成分,⽐如正弦波、⽅波、锯齿波等,傅⽴叶变换⽤正弦波作为信号的成分。
傅⾥叶变换在物理学、电⼦类学科、数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学、海洋学、结构动⼒学等领域都有着⼴泛的应⽤。
本节将利⽤python来实现⼀个傅⾥叶变换的简单模拟,既有助于⼤家理解傅⾥叶变化的意义,同时掌握matplotlib绘图的基本⽅法。
实验环境
OS:Windows
python:v3.6
matplotlib,numpy
实验步骤
题⽬⼀:周期函数的傅⾥叶分解
周期为2l的函数可以分解为如下的形式:
其中:
题⽬⼆:周期⽅波函数的傅⾥叶级数展开
如下图所⽰,存在周期为T的周期⽅波函数,根据上⾯给出的傅⾥叶级数,可以对齐进⾏展开。
展开式如下
这⾥ω=2π/T
题⽬三:利⽤matplot模拟傅⾥叶级数展开
1. python中np.zeros()的⽤法
⽤法:zeros(shape, dtype=float, order=‘C’)
返回:返回来⼀个给定形状和类型的⽤0填充的数组;
参数:shape:形状
dtype:数据类型,可选参数,默认numpy.float64
dtype类型:
t ,位域,如t4代表4位
b,布尔值,true or false
i,整数,如i8(64位)
u,⽆符号整数,u8(64位)
f,浮点数,f8(64位)
c,浮点负数,
o,对象,
s,a,字符串,s24
u,unicode,u24
order:可选参数,c代表与c语⾔类似,⾏优先;F代表列优先
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,10,0.02)
def sin_square(n):
y = np.zeros(500)
# print(y)
for i in range(0,n,1):
b = np.sin((2*i+1)*x/(2*i+1))
y = y+b
return y
def plot_sin_square(ax,x,y,n):
ax.plot(x,y,label ='n='+str(n))
ax.set_xlim([0,10])
ax.set_ylim([-1,1])
ax.legend()
y10 = sin_square(10)
y20 = sin_square(20)
y30 = sin_square(30)
fig,(a1,a2,a3)= plt.subplots(3,1,sharex =True,sharey =True) plot_sin_square(a1,x,y10,10)
plot_sin_square(a2,x,y20,20)
plot_sin_square(a3,x,y30,30)
plt.tight_layout()
plt.show()
得到的结果如下:能运行python的软件
可以看到,随着级数的增加,图像越来越趋近周期⽅波函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论