FFT就是Fast Fourier Transform 快速傅里叶变换。
两者的应用都是将时域中难以处理的信号转换成易于复处理的频域信号,分析完成后进行傅里叶反变换即得到原始的时域信号。
两者的异同是:我们知道在数学上用级数来无限逼进某个函数,以便简化计算过程而又不致使误差过大,这样工程上才能应用,否则一些数学模型是无法实现快速求解的。
IDFT:对于有限长的序列我们可以使用离散傅立叶变换,IDFT是对制序列傅立叶变换的等距采样。zhidao
FFT:并不是与IDFT不相同的另一种变换(即原理是一样的),而是为了减少IDFT运算次数的一种快速算法。它是对IDFT变换式进行一次次的分解,使其成为若干小点数IDFT的组合,从而减小运算量。常用的FFT是以2为基数,它的运算效率高,程序比较简单,使用也十分地方便。
下面的代码是用来按照频率取样法设计FIR高通数字滤波器的,你可以参考一下close all
clear all
clc
N1=23
wc=pi/3
Hk=[zeros(1,5) ones(1,N1) zeros(1,5)]
Y=0.2501
Hk(5)=Y
Hk(5+N1+1)=Y
N=length(Hk)
wk=0:2*pi/N:2*pi-2*pi/N
thetak=-pi*(N-1)*(0:N-1)/N%相位采样向量θ(k)=-(N-1)*pi*k/N, 0≤k≤N-1
Hdk=Hk.*exp(j*thetak)%构造频率采样向量Hd(k)
hn=real(ifft(Hdk))%hn=IDFT[H(k)],real只取实部,忽略计算误差引起的虚部
figure
plot(wk/pi*N/2,Hk)
hold on
scatter(wk/pi*N/2,Hk,'*')
grid
[H,w]=freqz(hn,1)
figure
AH=abs(H)
maxAH=max(AH)
subplot(211)
plot(w/pi,20*log10(abs(H)/maxAH))
axis([0 1 -80 5])
grid
subplot(212)
plot(w/pi,abs(H)/maxAH)
axis([0 1 -0.1 1.1])
grid
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)