数字信号处理学习笔记(一)|离散傅里叶变换
離散傅里葉變換(DFT)
離散傅里葉變換(Discrete Fourier Transform)的實質是有限長序列傅里葉變換的有限點離散采樣,實現了頻域離散化,使數字信號處理可以在頻域采用數值運算的方法進行,增大了數字信號處理的靈活性。
一、DTF的定義
設x(n)是一個長度為M的有限長序列,則定義x(n)的N點離散傅里葉變化為:
逆變換為:
二、DFT與傅里葉變換的關系
上述式子說明了:DFT的X(k)是x(n)傅里葉變換X(e^jw)在區間[0,2π]上的N點等間隔采樣。
三、DFT與Z變換的關系
**上述式子說明了:DFT的X(k)是Z變換X(z)在單位圓上的N點等間隔采樣
四、DFT的性質
(1)線性
(2)循環位移
設x(n)為有限長序列。長度為M,M≤N,則x(n)的循環位移為
循環過程如下所示:
(3)時域循環移位定理
設x(n)是長度為M(M≤N)的有限長序列,y(n)為x(n)的循環移位。即:
則:
證明過程如下:
令n+m=n’,則有
(4)頻域循環移位定理
同(3)
(4)復共軛序列的DFT
設x*(n)是x(n)的復共軛序列,長度為N,則
證明如下,根據DFT唯一性
五、用DFT進行譜分析的誤差
(1)混疊現象:
對連續信號進行譜分析時,首先要對其采樣,由時域連續變時域離散信號,再用DFT(FFt)進行譜分析。采樣速率必須滿足采樣定理,否則會在w=π附近發生頻率混疊現象。
對于Fs確定的情況,一般在采樣前進行預濾波,濾除高于折疊頻率Fs/2的頻率成分
(2)柵欄效應:
N點DFT是在頻率區間[0,2π]上對時域離散信號的頻譜進行N點等間隔采樣,二采樣點之間的頻譜是看不到的。
采用提高頻率分辨率,對原序列尾部補零,增大截取長度及DFT變換區間長度等方法解決柵欄效應
(3)截斷效應
對無限長序列進行譜分析時,需要將其截斷 成有限長序列。
影響有
(1)泄露
(2)譜間干擾
六、用Python語言編寫DFT算法
編程思路:
1、利用歐拉公式
得到
2、幅值計算
計算sin(0.4pin+pi/3)+10sin(0.2pin+pi/4)
代碼如下:
from math import * import numpy as np import matplotlib.pyplot as plt def signal(n):return (sin(0.4 * pi * n + pi / 3) + 10 * sin(0.2 * pi * n + pi / 4))# 生成WN項 def wn_k(k, n, N):return complex(cos(2 * pi * n * k / N), sin(-2 * pi * n * k / N))amplitude = [] # 準備一個空列表 power_spectrum = [] sums = 0# 256點DFT,X(0)到X(255) for k in range(0, 256):for n in range(1, 257):# n的取值為從1到256sums = sums + signal(n) * wn_k(k, n, 256)amplitude.append(sums)sums = 0print(amplitude, len(amplitude))for i in range(0, 256):power_spectrum.append(amplitude[i] ** 2)plt.subplot(2, 1, 1) plt.plot(np.abs(amplitude)) plt.title("amplitude_spectrum") plt.subplot(2, 1, 2) plt.plot(np.abs(power_spectrum)) plt.title("power_spectrum") plt.show()總結
以上是生活随笔為你收集整理的数字信号处理学习笔记(一)|离散傅里叶变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Linux上编写并运行Python文件
- 下一篇: Iterator主要有三个方法:hasN