0


傅里叶变换

李永乐老师讲解

讲解视频
在这里插入图片描述
在这里插入图片描述
振幅、频率
在这里插入图片描述
相位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

傅里叶级数

在这里插入图片描述
在这里插入图片描述
**因为一组标准正交基中向量自己和自己做内积为1,和其他向量做内积为0。
所以

      q
     
     
      1
     
    
    
     ∗
    
    
     v
    
   
   
    q_1*v
   
  
 q1​∗v相当于
 
  
   
    
     
      q
     
     
      1
     
    
    
     ∗
    
    
     
      q
     
     
      1
     
    
    
     =
    
    
     1
    
    
     ,
    
    
     
      q
     
     
      1
     
    
    
     ∗
    
    
     
      q
     
     
      i
     
    
    
     =
    
    
     0
    
    
     ,
    
    
     i
    
    
     !
    
    
     =
    
    
     1
    
   
   
    q_1*q_1=1,q_1*q_i=0,i!=1
   
  
 q1​∗q1​=1,q1​∗qi​=0,i!=1。**

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

傅里叶变换(FT)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

离散时间傅里叶变换(DTFT)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

离散傅里叶变换(DFT)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同时,离散周期傅里叶变换后,计算出来的是一个复数形式,即用正弦和余弦组合的形式近似表示原始信号,所以幅值应该是两者的组合,

       A
      
      
       
        s
       
       
        i
       
       
        
         n
        
        
         2
        
       
      
     
     
      +
     
     
      
       A
      
      
       
        c
       
       
        o
       
       
        
         s
        
        
         2
        
       
      
     
    
   
  
  
   \sqrt{A_{sin^2} + A_{cos^2}}
  
 
Asin2​+Acos2​​

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验验证

在这里插入图片描述

#! /usr/bin/python3# -*- encoding:utf-8 -*-import matplotlib.pyplot as plt
from matplotlib.pylab import mpl
import numpy as np
from numpy import pi, cos, sin

# 中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=Falsedeftest2():'''
    离散傅里叶变换
    一维时序信号y,它由2V的直流分量(0Hz),和振幅为3V,频率为50Hz的交流信号,以及振幅为1.5V,频率为75Hz的交流信号组成:
    y = 2 + 3*np.cos(2*np.pi*50*t) + 1.5*np.cos(2*np.pi*75*t)
    然后我们采用256Hz的采样频率,总共采样256个点。
    '''
    fs =256# 采样频率, 要大于信号频率的两倍
    t = np.arange(0,1,1.0/ fs)# 1秒采样fs个点
    N =len(t)
    freq = np.arange(N)# 频率counter# x = 2 + 3 * cos(2 * pi * 50 * t) + 1.5 * cos(2 * pi * 75 * t)  # 离散化后的x[n]
    x =2+3* cos(2* pi *10* t)+1.5* cos(2* pi *15* t)# 离散化后的x[n]

    X = np.fft.fft(x)# 离散傅里叶变换'''
    根据STFT公式原理,实现的STFT计算,做了/N的标准化
    '''
    X2 = np.zeros(N, dtype=np.complex)# X[n]for k inrange(0, N):# 0,1,2,...,N-1for n inrange(0, N):# 0,1,2,...,N-1# X[k] = X[k] + x[n] * np.exp(-2j * pi * k * n / N)
            X2[k]= X2[k]+(1/ N)* x[n]* np.exp(-2j* pi * k * n / N)

    fig, ax = plt.subplots(5,1, figsize=(12,12))# 绘制原始时域图像
    ax[0].plot(t, x, label='原始时域信号')
    ax[0].set_xlabel('Time (s)')
    ax[0].set_ylabel('Amplitude')

    ax[1].plot(freq,abs(X),'r', label='调用np.fft库计算结果')
    ax[1].set_xlabel('Freq (Hz)')
    ax[1].set_ylabel('Amplitude')
    ax[1].legend()

    ax[2].plot(freq,abs(X2),'r', label='根据STFT计算结果')
    ax[2].set_xlabel('Freq (Hz)')
    ax[2].set_ylabel('Amplitude')
    ax[2].legend()

    X_norm = X /(N /2)# 换算成实际的振幅
    X_norm[0]= X_norm[0]/2
    ax[3].plot(freq,abs(X_norm),'r', label='转换为原始信号振幅')
    ax[3].set_xlabel('Freq (Hz)')
    ax[3].set_ylabel('Amplitude')
    ax[3].set_yticks(np.arange(0,3))
    ax[3].legend()

    freq_half = freq[range(int(N /2))]# 前一半频率
    X_half = X_norm[range(int(N /2))]

    ax[4].plot(freq_half,abs(X_half),'b', label='前N/2个频率')
    ax[4].set_xlabel('Freq (Hz)')
    ax[4].set_ylabel('Amplitude')
    ax[4].set_yticks(np.arange(0,3))
    ax[4].legend()

    plt.show()

test2()

在这里插入图片描述

快速傅里叶变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_54385104/article/details/128807361
版权归原作者 why151 所有, 如有侵权,请联系我们删除。

“傅里叶变换”的评论:

还没有评论