通信与信息工程学院数字信号处理课程设计(综合实验)班级:电信XX班姓名:XX学号:XX指导教师:李远征设计时间:2013~2014学年第18~19周成绩:评通信与信息工程学院二〇一三年设计一 正余弦信号的谱分析【一】 设计目的1. 用DFT 实现对正余弦信号的谱分析;2. 观察DFT 长度和窗函数长度对频谱的影响;3. 对DFT 进行谱分析中的误差现象获得感性认识。
【二】 设计原理数字信号处理方法的一个重要用途是在离散时间域中确定一个连续时间信号的频谱,通常称为频谱分析,更具体地说,它也包括确定能量谱和功率谱。
基于表征正余弦信号的基本参数,如振幅、频率和相位不随时间改变,则此信号的傅立叶变换)(ωj e G 可以用计算它的DTFT 得到∑∞-∞=-=n nj j en g e G ωω)()(实际上无限长序列)(n g 首先乘以一个长度为M 的窗函数)(n w ,使它变成一个长为M 的有限长序列,)()()(1n w n g n g =,对)(1n g 求出的DTFT )(1ωj e G 应该可以作为原连续模拟信号)(t g a 的频谱估计,然后求出)(1ωj eG 在πω20≤≤区间等分为N 点的离散傅立叶变换DFT 。
为保证足够的分辨率,DFT 的长度N 选的比窗长度M 大,其方法是在截断了的序列后面补上N -M 个零。
计算采用FFT 算法。
【三】 设计内容1.图1.1 设计内容1的运行结果程序:N=input('输入谱分析的长度');n=0:N-1;x1=cos(pi*20*n/64);x2=cos(pi*22*n/64);subplot(2,2,1),stem(n,x1)xlabel('n');ylabel('x1(n)');title('余弦序列');subplot(2,2,2),stem(n,x2)xlabel('n');ylabel('x2(n)');title('余弦序列');X1=abs(fft(x1,N));subplot(2,2,3)k=0:N-1;stem(k,X1) %绘制序列的幅xlabel('k');ylabel('X1(k)');string=[num2str(N),'点FFT幅频曲线'];X2=abs(fft(x2,N)); %求x2余弦序subplot(2,2,4)k=0:N-1;stem(k,X2)xlabel('k');ylabel('X2(k)');string=[num2str(N),'点FFT幅频曲线'];泄漏的原因:通过图可看出:频率为10Hz的余弦曲线DFT只有两个点不等于零,位于k=5和k=27处,k=5对应于频率10Hz,k=27对应于频率54Hz(也就是-10Hz)。
这样DFT确实正确的分辨了余弦信号的频率。
但是这样的理想结果是恰巧得到的,此时我们借去了五个完整的余弦周期(f*N/Fs=5). 将频率改为11Hz,采样频率和窗长度依然为32点,计算图像可看出:频谱图上k=5和k=27处都有较大的峰值,而其它的点上幅度不再为零。
这两个峰值对应的频率为10Hz和12Hz,所以,信号的峰值位于两者之间,本来是单一的11Hz频率的能量会分不到许多DFT频率上,这种现象叫频率泄露,来源于截断效应。
2.图1.2 设计内容2的运行结果程序:N1=input('输入谱分析的长度');N2=input('输入谱分析的长度');N3=input('输入谱分析的长度');N4=input('输入谱分析的长度');n=0:16;x=0.5*sin(pi*2*0.22*n)+sin (pi*2*0.34*n);X1=abs(fft(x,N1)); %求余弦序列的N1点FFTsubplot(2,2,1)k=0:N1-1;stem(k,X1) %绘制序列的幅频特性曲线xlabel('k');ylabel('X1(k)');string=[num2str(N1),'点FFT幅频曲线'];X2=abs(fft(x,N2)); %求余弦序列的N2点FFTsubplot(2,2,2)k=0:N2-1;stem(k,X2) %绘制序列的幅频特性曲线xlabel('k');ylabel('X2(k)');string=[num2str(N2),'点FFT幅频曲线'];X3=abs(fft(x,N3)); %求余弦序列的N3点FFTsubplot(2,2,3)k=0:N3-1;stem(k,X3) %绘制序列的幅频特性曲线xlabel('k');ylabel('X3(k)');string=[num2str(N3),'点FFT幅频曲线'];X4=abs(fft(x,N4)); %求余弦序列的N4点FFTsubplot(2,2,4)k=0:N4-1;stem(k,X4) %绘制序列的幅频特性曲线xlabel('k');ylabel('X4(k)');string=[num2str(N4),'点FFT幅频曲线'];DFT长度对频谱分辨率的影响:DFT样本值就是其DTFT在相应位置的采样。
在图中很难看出两个峰值,因此要提高它的分辨率,故把R增大,逐渐可以看出它有两个峰值,将k换算成数字频率f=w/2*pi=k/R.这样可确定峰值的位置大体在f=0.21和0.35之附近,与信号的给定频率有一定的误差,这也是截断和泄露带来的问题,在这图上还可以看到一些较小的峰,这是很难判断是输入信号固有的,还是由泄露引起的。
这说明了增加DFT长度R减小了相邻样本间的频率间距,提高频谱的视在分辨率,因而可以提高样本未知的测定精度。
3.要能分清两个频率,分辨率至少应达到f=0.03.因为此处的数字频率是对采样频率Fs进行归一化后的,几fr最大为1,因此总的样本数至少要达到1/0.03=33. 加窗以后可以使频谱函数更加光滑,便于分辨峰值位置和准确的数值,为了提高实际分辨率,应该尽量增加信号的长度N及DF长度R,当受到条件限制不能提高N,则单独提高R可以提高视在分辨率.说明:①图形输出结果应清楚美观,可以排版,缩放,建议充分利用子图分割显示的方式,将多幅图形显示在一个窗口中,便于比较和说明。
②代码只需给出核心部分,中间添加必要的注释(可以手写)。
③写清题号,不用抄题目,直接给出设计内容结果图形和代码即可。
【四】结果分析与体会回答内容包括以下几点:1.分析输出结果,说明设计是否正确,或是否达到了设计要求;2.设计有哪些不足和可以改进之处;3.通过本设计有哪些体会和建议。
注:回答的内容应简明扼要,要求手写完成;内容①必答,内容②和③可根据自己对设计的了解和体会选答;若两份报告回答内容雷同,取消两份报告的成绩。
设计二数字滤波器的设计及实现【一】设计目的1.熟悉IIR数字滤波器和FIR数字滤波器的设计原理和方法;2.学会调用MATLAB信号处理工具箱中的滤波器设计函数设计各种IIR和FIR数字滤波器,学会根据滤波要求确定滤波器指标参数;3.掌握用IIR 和FIR 数字滤波器的MATLAB 实现方法,并能绘制滤波器的幅频特性、相频特性;4.通过观察滤波器的输入、输出信号的时域波形及其频谱,建立数字滤波的概念。
【二】 设计原理抑制载波单频调幅信号的数学表达式为[]))(2c o s ())(2c o s (21)2c o s ()2c o s ()(000t f f t f f t f t f t s c c c ++-==ππππ (2.1)其中,)2cos(t f c π称为载波,c f 为载波频率,)2cos(0t f π称为单频调制信号,0f 为调制正弦波信号频率,且满足c f >0f 。
由(2.1)式可见,所谓抑制载波单频调制信号,就是两个正弦信号相乘,它有2个频率成分:和频c f +0f ,差频c f -0f ,这两个频率成分关于载波频率c f 对称。
所以,1路抑制载波单频调幅信号的频谱图是关于载波频率c f 对称的两根谱线。
显然,当调制频率0f 和(或)载波频率c f 不同时,可以得到包含不同频率成分的单频调幅信号,将几路不同频率成分的单频调幅信号相加后形成混合信号,产生复合信号。
【三】 设计内容 1.图2.1 设计内容1的运行结果程序:function st=mstg%产生信号序列st ,并显示st 的时域波形和频谱%st=mstg 返回三路调幅信号相加形成的混合信号,长度N=800 N=800; %信号长度N 为800Fs=10000;T=1/Fs;Tp=N*T; %采样频率Fs=10kHz ,Tp 为采样时间 t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;fc1=Fs/10; %第1路调幅信号载波频率fc1=1000Hzfm1=fc1/10; %第1路调幅信号的调制信号频率fm1=100Hzfc2=Fs/20; %第2路调幅信号载波频率fc2=500Hzfm2=fc2/10; %第2路调幅信号的调制信号频率fm2=50Hzfc3=Fs/40; %第3路调幅信号载波频率fc3=250Hzfm3=fc3/10; %第3路调幅信号的调制信号频率fm3=25Hzxt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t); %产生第1路调幅信号xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t); %产生第2路调幅信号xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t); %产生第3路调幅信号st=xt1+xt2+xt3; %三路信号相加,得到复合信号fxt=fft(st,N); %计算信号st的频谱%以下为绘图命令subplot(2,1,1);plot(t,st);grid;xlabel('t/s');ylabel('s(t)');axis([0,Tp,min(st),max(st)]);title('(a)s(t)的波形')subplot(2,1,2);stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱')axis([0,Fs/8,0,1.2]);xlabel('f/Hz');ylabel('幅度');(注意:将函数mstg保存在M文件里面,保存名为st。