数字信号处理学习笔记(一)|离散傅里叶变换
離散傅里葉變換(DFT)
離散傅里葉變換(Discrete Fourier Transform)的實質(zhì)是有限長序列傅里葉變換的有限點離散采樣,實現(xiàn)了頻域離散化,使數(shù)字信號處理可以在頻域采用數(shù)值運算的方法進(jìn)行,增大了數(shù)字信號處理的靈活性。
一、DTF的定義
設(shè)x(n)是一個長度為M的有限長序列,則定義x(n)的N點離散傅里葉變化為:
逆變換為:
二、DFT與傅里葉變換的關(guān)系
上述式子說明了:DFT的X(k)是x(n)傅里葉變換X(e^jw)在區(qū)間[0,2π]上的N點等間隔采樣。
三、DFT與Z變換的關(guān)系
**上述式子說明了:DFT的X(k)是Z變換X(z)在單位圓上的N點等間隔采樣
四、DFT的性質(zhì)
(1)線性
(2)循環(huán)位移
設(shè)x(n)為有限長序列。長度為M,M≤N,則x(n)的循環(huán)位移為
循環(huán)過程如下所示:
(3)時域循環(huán)移位定理
設(shè)x(n)是長度為M(M≤N)的有限長序列,y(n)為x(n)的循環(huán)移位。即:
則:
證明過程如下:
令n+m=n’,則有
(4)頻域循環(huán)移位定理
同(3)
(4)復(fù)共軛序列的DFT
設(shè)x*(n)是x(n)的復(fù)共軛序列,長度為N,則
證明如下,根據(jù)DFT唯一性
五、用DFT進(jìn)行譜分析的誤差
(1)混疊現(xiàn)象:
對連續(xù)信號進(jìn)行譜分析時,首先要對其采樣,由時域連續(xù)變時域離散信號,再用DFT(FFt)進(jìn)行譜分析。采樣速率必須滿足采樣定理,否則會在w=π附近發(fā)生頻率混疊現(xiàn)象。
對于Fs確定的情況,一般在采樣前進(jìn)行預(yù)濾波,濾除高于折疊頻率Fs/2的頻率成分
(2)柵欄效應(yīng):
N點DFT是在頻率區(qū)間[0,2π]上對時域離散信號的頻譜進(jìn)行N點等間隔采樣,二采樣點之間的頻譜是看不到的。
采用提高頻率分辨率,對原序列尾部補(bǔ)零,增大截取長度及DFT變換區(qū)間長度等方法解決柵欄效應(yīng)
(3)截斷效應(yīng)
對無限長序列進(jìn)行譜分析時,需要將其截斷 成有限長序列。
影響有
(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 = [] # 準(zhǔn)備一個空列表 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()總結(jié)
以上是生活随笔為你收集整理的数字信号处理学习笔记(一)|离散傅里叶变换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Linux上编写并运行Python文件
- 下一篇: Iterator主要有三个方法:hasN