实验一 快速傅里叶变换之报告
一 、实验目的
1、在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;
2、熟悉并掌握按时间抽取FFT 算法的程序;
3、了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、
栅栏效应等,以便在实际中正确应用FFT 。
二 实验内容
a ) 信号频率F =50Hz ,采样点数N=32,采样间隔T=
matlab 程序代码为:
F=50; T=; N=32;
n=0:N-1;
t=n*T;
A=sin(2*pi*F*t);
figure;
Y = fft(A,N);
h = (abs(Y));
h=h/max(h(1:N));
for n=1:N;
string1=strcat('X(',num2str(n-1),
')=',num2str(h(n)));
disp(string1);
f=(n/T)/N;
end
stem([0:N-1]/N/T,h);
xlabel('ƵÂÊ/HZ');
ylabel('Õñ·ùX£¨ejw£©');
title('·ùÆµÌØÐÔ');
上述代码命令中,将FFT 变换后的数字变量K ,在画图时转换成频域中的频率f 。
这主
要是根据数字频率与模拟域频率之间的关系:
T Ω=ω
其中ω、Ω分别为数字和模拟域中的频率,且N
k πω2= f π2=Ω 于是有: NT
k f =
运算结果:
X(1)=1 X(2)= X(3)= X(4)=
X(5)= X(6)= X(7)=
X(8)= X(9)= X(10)=
X(11)= X(12)= X(13)=
X(14)= X(15)= X(16)=
X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)=
X(23)= X(24)= X(25)=
X(26)= X(27)= X(28)=
X(29)= X(30)= X(31)=1
b)信号频率F=50Hz,采样点数N=32,采样间隔T=
同理可将a)中F、N、T,参数改成要求值(以下均是如此),即可得,X(0)= X(1)= X(2)= X(3)=
X(4)= X(5)= X(6)= X(7)=
X(8)=1 X(9)= X(10)= X(11)=
X(12)= X(13)= X(14)= X(15)=
X(16)= X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)= X(23)=
X(24)=1 X(25)= X(26)= X(27)=
X(28)= X(29)= X(30)= X(31)=
c)信号频率F=50Hz,采样点数N=32,采样间隔T= X(0)= X(1)= X(2)= X(3)= X(4)=
X(5)= X(6)= X(7)=1 X(8)= X(9)=
X(10)= X(11)= X(12)= X(13)= X(14)=
X(15)= X(16)= X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)= X(23)= X(24)=
X(25)=1 X(26)= X(27)= X(28)= X(29)=
X(30)= X(31)=
此时采样总时间t=*32=,信号周期T1=1/50=,则t/T1=,不为整数,即采样与原信号没有相同的基频,因此事不能运用FFT的,其结果也必将是错误的。
d)信号频率F=50Hz,采样点数N=32,采样间隔T=
X(0)= X(1)= X(2)= X(3)= X(4)=
X(5)= X(6)=1 X(7)= X(8)= X(9)=
X(10)= X(11)= X(12)= X(13)= X(14)=
X(15)= X(16)= X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)= X(23)= X(24)=
X(25)= X(26)=1 X(27)= X(28)= X(29)=
X(30)= X(31)=
同c)一样,此时采样总时间t=*32=,信号周期T1=1/50=,则t/T1=,不为整数,即采样与原信号没有相同的基频,因此事不能运用FFT的,其结果也必将是错误的。
e)信号频率F=50Hz,采样点数N=64,采样间隔T=
X(0)= X(1)= X(2)=1 X(3)= X(4)=
X(5)= X(6)= X(7)= X(8)= X(9)=
X(10)= X(11)= X(12)= X(13)= X(14)=
X(15)= X(16)= X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)= X(23)= X(24)=
X(25)= X(26)= X(27)= X(28)= X(29)=
X(30)= X(31)= X(32)= X(33)= X(34)=
X(35)= X(36)= X(37)= X(38)= X(39)=
X(40)= X(41)= X(42)= X(43)= X(44)=
X(45)= X(46)= X(47)= X(48)= X(49)=
X(50)= X(51)= X(52)= X(53)= X(54)=
X(55)= X(56)= X(57)= X(58)= X(59)=
X(60)= X(61)= X(62)=1 X(63)=
满足奈奎斯采样定律,结果正确。
f)信号频率F=250Hz,采样点数N=32,采样间隔T=
X(0)= X(1)= X(2)= X(3)= X(4)= X(5)= X(6)= X(7)=
X(8)=1 X(9)= X(10)= X(11)=
X(12)= X(13)= X(14)= X(15)=
X(16)= X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)= X(23)=
X(24)=1 X(25)= X(26)= X(27)= X(28)= X(29)= X(30)= X(31)=
显然,由于采样频率小于2倍的最高频率,不满足奈奎斯采样定理,发生频谱混叠,因此其FFT不能正确的反应其真实的频谱。
g)将c)信号后补32个0,做64点FFT
Matlab程序代码:T=;F1=50;N=64;
t = [0:32-1]*T;
t2=[t zeros(1,32)];
x=sin(F1*2*pi*t2);
figure;
Y = fft(A,N);
h = (abs(Y));
h=h/max(h(1:N));
for n=1:N;
string1=strcat('X(',num2str(n-1), ')=',num2str(h(n)));
disp(string1);
f=(n/T)/N;
end
stem([0:N-1]/N/T,h);
xlabel('ƵÂÊ/HZ');
ylabel('Õñ·ùX£¨ejw£©');
title('·ùÆµÌØÐÔ');
运行结果:
X(0)= X(1)= X(2)= X(3)=
X(4)= X(5)= X(6)= X(7)=
X(8)= X(9)= X(10)= X(11)=
X(12)= X(13)= X(14)= X(15)=
X(16)=1 X(17)= X(18)= X(19)=
X(20)= X(21)= X(22)= X(23)=
X(24)= X(25)= X(26)= X(27)=
X(28)= X(29)= X(30)= X(31)=
X(32)= X(33)= X(34)= X(35)=
X(36)= X(37)= X(38)= X(39)=
X(40)= X(41)= X(42)= X(43)=
X(44)= X(45)= X(46)= X(47)=
X(48)=1 X(49)= X(50)= X(51)=
X(52)= X(53)= X(54)= X(55)=
X(56)= X(57)= X(58)= X(59)=
X(60)= X(61)= X(62)= X(63)=
由于在时间域内信号加零,致使振幅谱中出现很多其他成分,这是加零造成的,这种效应称为栅栏效应,其中出现的频谱有信号的初相有关。
三、实验小结
本次实验,我利用了matlab中的FFT函数对要求的几组信号进行了FFT变换。
通过快速傅里叶变换实验,我对快速傅里叶变换有了进一步的理解,如数字和模拟域的频率互换等。
同时也接触了相关的问题,如栅栏效应等,以及FFT运算的部分条件。
在这里,我仍有很多不足,对FFT的理解仍不够深刻,还需认真学习!。