资源描述:
《信号分析matlab实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一用FFT进行信号谱分析1、实验步骤(1)复习DFT的定义、性质和用DFT作谱分析的有关内容。(2)复习FFT算法原理并读懂FFTMatlab语言的编程思想。(3)编制信号产生子程序,产生一下典型信号供谱分析使用。实验一主程序框图2、上机实验内容(1)、对2中所给出的信号分别进行谱分析,试验参数如下:、、、、进行DFT时的点数N=8对于需进行采样,采样频率(2)令,用FFT计算8点的离散付立叶变换:,并根据DFT的对称性,由求出和,并与(1)中所得的结果进行比较。(3)令,重复(2)。3、思考题(1
2、)N=8时,和的幅频特性是否相同?为什么?N=16呢?由实验可知都不相同。(2)如果周期信号的周期预先不知道,如何用FFT进行谱分析?周期信号的周期预先不知道时,可先截取M点进行DFT,再将截取长度扩大1倍截取,比较结果,如果二者的差别满足分析误差要求,则可以近似表示该信号的频谱(1)%第一x1=[1111];a=fft(x1,8);subplot(2,3,1);stem(abs(a));%第二forn=1:1:4;x(n)=n;endforn=5:1:8;x(n)=9-n;enda=fft(x,8);
3、subplot(2,3,2);stem(abs(a));%第三forn=1:1:4;x(n)=5-n;endforn=5:1:8;x(n)=4;enda=fft(x,8);subplot(2,3,3);stem(abs(a));%第四n=1:1:8;x(n)=cos(pi/4*n);a=fft(x,8);subplot(2,3,4);stem(abs(a));%第五n=1:1:8x(n)=sin(pi/4*n);a=fft(x,8);subplot(2,3,5);stem(abs(a));clearal
4、lt=0:1/64:15/64;x=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);b=fft(x,16);c=fft(x,32);d=fft(x,64);subplot(3,1,1);stem(abs(b));subplot(3,1,2);stem(abs(c));subplot(3,1,3)stem(abs(d))(2)clearalln=1:1:8;x4=cos(pi/4*n);x5=sin(pi/4*n);x7=x4+x5;a=fft(x7,8);subplot(3,
5、1,1)stem(abs(a));x4_2=real(a);subplot(3,1,2);stem(abs(x4_2));x5_2=imag(a);subplot(3,1,3);stem(abs(x5_2))(3)clearalln=1:1:8;x4=cos(pi/4*n);x5=sin(pi/4*n);x8=x4+j*x5;a=fft(x8,8);subplot(3,1,1);stem(abs(a));x4_2=(x8+conj(x8))/2;subplot(3,1,2);stem(abs(x4_2)
6、);x5_2=(x8-conj(x8))/2;subplot(3,1,3);stem(abs(x5_2));思考题:实验二频谱细化、频谱泄漏及栅栏效应1、上机实验内容(1)在实验一的基础上,频谱细化时选取的参数:N=16,32,的取样频率同实验一。编制相应的程序。(2)用505Hz正弦波信号的频谱分析来说明栅栏效应所造成的频谱计算误差,参数如下: 设定采样频率:fs=5120Hz,FFT计算点数为512,其离散频率点为: fi=i.fs/N=i.5120/512=10,i=0,1,2,….,N/2
7、 位于505Hz位置的真实谱峰被挡住看不见,看见的只是它们在相邻频率500Hz或510Hz处能量泄漏的值。 若设fs=2560Hz,则频率间隔df=5Hz,重复上述分析步骤,这时在505位置有谱线,我们就能得到它们的精确值。 从时域看,这个条件相当于对信号进行整周期采样,实际中常用此方法来提高周期信号的频谱分析精度。编制相应的程序,并绘制频谱图。(3)对300Hz正弦波信号分别用矩形窗截断和汉宁窗截断,计算截断前后该正弦波信号的的频谱,观察其频谱泄漏情况。采样频率fs=1200Hz,窗的长度N=51
8、2。编制相应的程序,并绘制加窗前后的频谱图。2、思考题(1)信号整周期采样时,其FFT谱中是否还存在能量泄漏误差?不存在(2)对信号的频谱进行细化时,对序列进行末尾补零点后,序列的长度必须是原序列长度的整数倍吗?是的(2)clearallfs=2560;N=512;t=0:1/fs:(N-1)/fs;x=sin(2*pi*505*t);subplot(2,1,1);plot(x)y=fft(x,512);y=fftshift(y);f=fs