实验二离散付里叶变换与快速付里叶变换
(1) 掌握DFT 的理论,通过DFT 对典型信号进行的频谱分析,加深对DFT 的理解。
(2) FFT 对典型信号进行的频谱分析,加深对FFT 的理解。
(3) 通过对同一信号,作相同点数的DFT 与FFT 的频谱和运行时间的比较,掌握两者的异同点。
(4) 通过对同一信号,作不同点数的FFT,比较其对应的频谱,比较两者的异同点。
:
正变换: 其中- = × =
反变换: 其中
2. 离散傅里叶变换DFT 与快速傅里叶变换FFT 的关系
快速傅里叶变换FFT 是离散傅里叶变换DFT 的快速算法,其原理与DFT 完全一样。
FFT 算法分两大类:按时间抽取的FFT 与按频率抽取的FFT。
如:基-2 按时间抽取的FFT,其原理简述如下:
将x(n)按n 的奇、偶分成两组:
其中:x(n)的偶数组:å - = - =
x(n)的奇数组:-
这样就把N 点的DFT 分解成两个点的DFT,从而减少计算量。依此类推,直至n 分解至2。
- = × +
Xk=fft(x , N):表示对x 作N 点FFT 运算,得到x 的频谱Xk。
(1)
分别作N=64 的DFT 与FFT
:
function[Xk]=dfs(xn,N)
n=[0:1:N-1]
k=[0:1:N-1]
wn=exp(-j*2*pi/N)
nk=n'*k
wnnk=wn.^nk
Xk=xn*wnnk
调用dfs()函数及fft()函数求DFT 与FFT:
N=64
n=0:N-1;
k=0:N-1;
xn=cos(*pi*n)+cos(*pi*n);
Xk=dfs(xn,N);
subplot(1,2,1)
stem(k,abs(Xk))
title('DFT')
XK=fft(xn,N);
subplot(1,2,2)
stem(k,abs(XK))
title('FFT')
输出:
其中
程序如下:
n=0:1:255
k=0:1:255
len=length(n)
for i=1:len %分段函数的表达
if(0<=n(i)<=63)
xn=cos(*pi*n)+cos(*pi*n);
elseif(64<=n(i)<=255)
xn=0
end
end
Xk=dfs(xn,len);
subplot(1,2,1)
stem(k,abs(Xk))
title('DFT')
XK=fft(xn,len);
subplot(1,2,2)
stem(k,abs(XK))
title('FFT')
输出:
(2)
分别作N=64 的DFT 与FFT
程序如下:
N=64
n=0:N-1
k=0:N-1
xn=ones(1,N)
Xk=dfs(xn,N)
stem(n,xn)
subplot(1,2,1)
stem(k,abs(Xk))
title('DFT')
XK=fft(xn,N)
subplot(1,2,2)
stem(k,
离散付里叶变换与快速付里叶变换 来自淘豆网m.daumloan.com转载请标明出处.