正弦波叠加成及波的分解

正弦波叠加成及波的分解

  • 1. 引言
  • 2. 特殊波形的产生
  • 3. 信号的分解与信号还原

在这里插入图片描述
持续更新ing,欢迎各位点赞关注哦!

1. 引言

傅里叶变换是信号分析的基础,法国科学家傅里叶早在1807年提出任何周期函数都可以分解成一系列正余弦函数。同样通过这些正余弦函数的叠加可以组成原始函数,因此可以利用傅里叶变换处理信号,获取有用组分,进行数据滤波等。傅里叶变换分为离散型数据的傅里叶级数对和连续型数函数的傅里叶变换对。

以下引自维基百科:
在数学中,傅里叶级数(英语:Fourier series,/ˈfʊrieɪ, -iər/)是把类似波的函数表示成简单正弦波的方式。更正式地说,对于满足狄利克雷定理的周期函数,其傅里叶级数是由一组简单振荡函数[注 1]的加权和表示的方法。离散时间傅里叶变换是一个周期函数,通常用定义傅里叶级数的项进行定义。另一个应用的例子是Z变换,将傅里叶级数简化为特殊情形 |z|=1。傅里叶级数也是采样定理原始证明的核心。傅里叶级数的研究是傅里叶分析的一个分支。

傅里叶变换源自对傅里叶级数的研究。在对傅里叶级数的研究中,复杂的周期函数可以用一系列简单的正弦、余弦波之和表示。傅里叶变换是对傅里叶级数的扩展,由它表示的函数的周期趋近于无穷。

让我们来看一组动图。
正弦波叠加成及波的分解_第1张图片

上图展示了一个方波的分解与还原过程,这就是傅里叶变换最直观的表现

让我们来看一看不同振幅、不同频率的信号在频域的展现。

正弦波叠加成及波的分解_第2张图片

2. 特殊波形的产生

从以上也可以看出,任何波形都可以由基本函数通过线性叠加产生,那么:

要如何利用一系列正弦波来生成一个方波呢?其实可以采用如下公式:

正弦波叠加成及波的分解_第3张图片

要如何利用一系列正弦波来生成一个三角方波呢?其实可以采用如下公式:

正弦波叠加成及波的分解_第4张图片

Python程序

import numpy as np
import matplotlib.pyplot as plt
def y(n,x):
    return (1/n)*np.sin(n*x)
x=np.arange(-2*np.pi,2*np.pi,0.01)
n=np.array(range(1,50,2))
# n=[5,25,49]
yy=0
for i in n:
    yy+=y(i,x)
#     yy=y(i,x)
plt.plot(x,yy)
plt.show()

信号组分
正弦波叠加成及波的分解_第5张图片

方波波形

正弦波叠加成及波的分解_第6张图片

import numpy as np
import matplotlib.pyplot as plt
def y(n,x):
    return (1/n)*np.sin(n*x)
x=np.arange(-2*np.pi,2*np.pi,0.01)
n=np.array(range(1,50))
# n=[5,25,49]
yy=0
for i in n:
    yy+=y(i,x)
#     yy=y(i,x)
plt.plot(x,yy)
plt.show()

信号组分

正弦波叠加成及波的分解_第7张图片

三角波波形

正弦波叠加成及波的分解_第8张图片

3. 信号的分解与信号还原

根据傅里叶变化,我们可以把如下的波形进行分解。得到其各个组分。即其振幅和相位在频域的表现。

信号组分
正弦波叠加成及波的分解_第9张图片

原信号=三组分叠加信号

正弦波叠加成及波的分解_第10张图片

振幅谱

plt.magnitude_spectrum(yy,color='r',lw=0.6)

正弦波叠加成及波的分解_第11张图片

相位谱

plt.phase_spectrum(yy,color='r',lw=0.6)

正弦波叠加成及波的分解_第12张图片

叠加原波形信号组分

正弦波叠加成及波的分解_第13张图片

利用傅里叶变换得到的幅度和相位谱构建原波形

recover=np.zeros(N)
plt.figure(2,figsize=(8,6))
for a,p,f in zip(mo,phase,fre):
    singelCos
    recover+=singelCos#把这些三角函数都加起来
#     plt.plot(x,singelCos,lw=2)
    plt.plot(x,recover,lw=2)

正弦波叠加成及波的分解_第14张图片

你可能感兴趣的:(笔记,python)