欢迎来到天天文库
浏览记录
ID:37921458
大小:294.00 KB
页数:5页
时间:2019-06-02
《FFT算法分析实验实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告学院专业实验课程实验地点实验日期学号0000000000姓名******实验项目FFT算法分析实验一实验目的(1)掌握用DSP芯片对信号进行频谱分析的操作方法。(2)了解DSP进行FFT运算的算法及程序。二实验原理试验箱上的信源可以产生两个不同频率的正弦信号的叠加信号,将该信号用ADC进行采样,并将采集结果送入DSP芯片进行FFT运算,将结果以图的形式显示在电脑上,可分析出输入信号中有哪些频率分量。实际试验前可运用Matlab进行理论分析,便于与分析实验结果。从FFT结果图中计算信号的频率分量:N点FFT的
2、结果是N个复数,假设采样频率为Fs(程序中为16000Hz),采样点数为N(程序中为128),做FFT之后,某一点n(n从0开始)表示的频率为:Fn=n*Fs/N;该点的模值除以N/2就是对应该频率下的信号的幅度(对于直流信号是除以N)。程序运行后,第48个点附近FFT的模值不为0,对应频率为48*16000/128=6000,用该模值除以128/2,即64,约为1,就是叠加信号中该频率成份的幅值。Matlab程序代码:closeall;Adc=0;%直流分量幅度A1=1;%频率F1信号的幅度A2=1;%频率F2信
3、号的幅度F1=100;%信号1频率(Hz)F2=6000;%信号2频率(Hz)P1=0;%信号1相位(度)P2=0;%信号2相位(度)Fs=16000;%采样频率(Hz)N=128;%采样点数t=[0:1/Fs:N/Fs];%采样时刻%原始叠加信号S=Adc+A1*sin(2*pi*F1*t+pi*P1/180)+A2*sin(2*pi*F2*t+pi*P2/180);%显示原始信号plot(S);title('原始信号');figure;Y=fft(S,N);%做FFT变换Ayy=(abs(Y));%取模plot
4、(Ayy(1:N));%显示原始的FFT模值结果title('FFT模值');figure;Ayy=Ayy/(N/2);%换算成实际的幅度Ayy(1)=Ayy(1)/2;%直流分量的幅值单独处理F=([1:N]-1)*Fs/N;%换算成实际的频率值plot(F(1:N/2),Ayy(1:N/2));%显示换算后的FFT模值结果title('幅度-频率曲线图');三实验结果及分析利用示波器观察信源信号调整为:信号1频率500Hz,信号2频率5010Hz,峰峰值均为5V。运行Matlab程序得到如图1所示:图1Matl
5、ab仿真产生的信号波形图实际实验结果:由图可知,第4个点和第40个点附近FFT值不为零。代入公式N*16000/128可得,图2实际测试实验结果测试的实验结果为:在第4点和第40点。f1=4*16000/128=500Hz,f2=40*16000/128=5000Hz。误差分析:高频信号实验值为5000Hz,与设计值5010Hz存在一定误差。引起误差的原因是,本次实验做的事128点的FFT,相当于对频域的抽样,故只能表示FFT整数点上对应的频率。而5010Hz对应的FFt点为40.08,实验中无法取得该值,故出现了
6、误差。对于低频信号,其对应FFT值恰好位于整数位置上,故无误差出现。对于FFT参数的选择:若要获得更加精确的频率值,则应该适当增加FFT点数。若要获得更大频率范围的测量结果,应增大ADC的采样频率。四实验总结可以利用DSP芯片对位置信号做FFT变换,并通过分析其频谱图得知该未知信号中的频率分量。五基2FFT程序C函数设计#includeint fft(complex *a,int l){const double pai=3.141592553589793;complex u,w,m;unsig
7、ned n=1,nv2,nm1,k,le,lei,ip;unsigned i,j,m;double tmp;n<<=1;nv2=n>>=1;nm1=n-1;i=0;for(i=0;i>=1;}j+=k}le=1for(m=1;m<=1;m++){lei=lele<<=1;u=complex(1,0);tmp=pai/lei;w=complex(cos(tmp)
8、,-sin(tmp));for(j=0;j
此文档下载收益归作者所有