使用python进行傅里叶变换

目录

实验名称

使用python进行傅里叶变换

实验目的

1.掌握使用matplotlib进行绘图的基本步骤
2. 利用python程序实现傅里叶变换

实验原理

傅立叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅立叶变换用正弦波作为信号的成分。
傅里叶变换在物理学、电子类学科、数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学、海洋学、结构动力学等领域都有着广泛的应用。
本节将利用python来实现一个傅里叶变换的简单模拟,既有助于大家理解傅里叶变化的意义,同时掌握matplotlib绘图的基本方法。

实验环境

OS:Windows
python:v3.6
matplotlib,numpy

实验步骤

题目一:周期函数的傅里叶分解

周期为2l的函数可以分解为如下的形式:

使用python进行傅里叶变换
其中:
使用python进行傅里叶变换

; 题目二:周期方波函数的傅里叶级数展开

如下图所示,存在周期为T的周期方波函数,根据上面给出的傅里叶级数,可以对齐进行展开。

使用python进行傅里叶变换
展开式如下
使用python进行傅里叶变换
这里ω=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)

    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进行傅里叶变换
可以看到,随着级数的增加,图像越来越趋近周期方波函数

Original: https://blog.csdn.net/weixin_45746689/article/details/114821648
Author: 小赵要加油
Title: 使用python进行傅里叶变换

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762982/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球