资源预览内容
第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
第9页 / 共34页
第10页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
本科实验报告本科实验报告 实验名称:实验名称: 基于基于 MATLABMATLAB 数字信号处理实验数字信号处理实验 课程名称: 数字信号处理 实验时间: 任课教师:实验地点: 4-423 实验教师: 范哲意 学生姓名: 实验类型: 原理验证 综合设计 自主创新 学号 /班级: 组 号: 学 院: 信息与电子学院 同组搭档: 专 业: 电子科学与技术 成 绩: 实验实验1 1 利用利用DFTDFT分析信号频谱分析信号频谱 一、实验目的一、实验目的 1. 加深对DFT原理的理解。 2. 84应用DFT分析信号的频谱。 3. 深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决方法。 二、实验设备与环境二、实验设备与环境 计算机、MATLAB 软件环境。 三、实验基础理论三、实验基础理论 1. DFT与DTFT的关系 有限长序列的离散时间傅里叶变换在频率区间 x(n)(0 n N - 1) X (e j ) 的N个等间隔分布的点上的N个取样值可 (0 2)k = 2k/N(0 k N - 1) 以由下式表示 X (e j )| = 2k/N = N - 1 k = 0 x(n)e - j2 N kn = x(k) 0 k N - 1 (2 - 1) 由上式可知,序列x(n)的N点DFT的X(k),实际上就是x(n)序列的DTFT在N个等间隔频率点 上样本X(k)。 k = 2k/N(0 k N - 1) 2. 利用DFT求DTFT 方法1:由X(k)恢复出的方法如图2.1所示: X (e j ) 图2.1 由N 点DFT 恢复频谱DTFT 的流程 由图2.1 所示流程可知: X(ej)= n =- x(n)e - jn = 1 N n =- N - 1 k = 0 X(k)W - kn N e - jn (2 - 2) 由式2-2 可以得到 X(ej)= N k = 1 X(k)( - 2k N ) (2 - 3) 其中 (x)为内插函数 () = sin(N 2) Nsin( 2) e - jN - 1 2 (2 - 4) 方法2:然而在实际MATLAB 计算中,上述插值运算不见得是最好的办法。由于DFT是 DTFT 的取样值,其相邻两个频率样本点的间距为 ,所以如果我们增加数据的长度 2/N N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT来近似 计算DTFT。如果没有更多的数据,可以通过补零来增加数据长度。 3. 利用DFT分析连续时间信号的频谱 采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要 进行两个操作:一是采样,二是截断。 对于连续时间非周期信号,按采样间隔T进行采样,截取长度为M,那么 x a(t) X a(j) = - x a(t)e - jtdt = T M - 1 n = 0 x a(nT)e - jnT (2 - 5) 对进行N点频域采样,得到 X a(j) X (e j )| = k2 NT = T M - 1 n = 0 x a(nT)e - j2 N kn = TXM(k) (2 - 6) 因此,可以将利用DFT分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T,得到离散序列x(n); (2)确定截取长度M,得到M点离散序列,这里w(n)为窗函数。 xM(n)= x(n)w(n) (3)确定频域采样点数N,要求。 N M (4)利用FFT计算离散序列的N点DFT,得到。 XM(k) (5)根据式(2-6)由计算采样点的近似值。 XM(k)X a(j) 采用上述方法计算的频谱,需要注意如下三个问题: x a(t) (1)频谱混叠。如果不满足采样定理的条件,频谱会出现混叠误差。对于频谱无限宽 的信号,应考虑覆盖大部分主要频率分量的范围。 (2)栅栏效应和频谱分辨率。使用DFT 计算频谱,得到的结果只是N 个频谱样本值, 样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。频谱分辨率 与记录长度成反比,要提高频谱分表率,就要增加记录时间。 (3)频谱泄露。对信号截断会把窗函数的频谱引入信号频谱,照成频谱泄露。解决这 个问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。 因此,要合理选取采样间隔和截取长度,必要时还需考虑加适当的窗。 对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总 是有限长的,仍然可以采用上述方法近似计算。 4. 可能用到的MATLAB 函数与代码 实验中DFT运算可采用MATLAB中提供的函数fft来实现。 DTFT可以利用MATLAB矩阵运算的方法进行计算 X (e j ) = nN n = n1 xne - jn =xn1,xn2,xnN e - jn1 e - jn2 e - jnN (2 - 7) 四、实验内容四、实验内容 1. 已知x(n)=2,-1,1,1,完成如下要求: (1)计算其DTFT,并画出区间的波形。 - , (2)计算4点DFT,并把结果显示在(1)所画的图形中。 (3)对x(n)补零,计算64点DFT,并显示结果。 (4)根据实验结果,分析是否可以由 DFT 计算 DTFT,如果可以,如何实现。 (1)(2)(1)(2) n=0:3; x=2,-1,1,1; w=-pi:0.01*pi:pi; X=x*exp(-j*n*w); X_FFT=fft(x); subplot(211); plot(w,abs(X);xlabel(Omega/pi); title(Magnitude);axis tight hold on; w2=0,0.5*pi,pi,-0.5*pi; stem(w2,abs(X_FFT),filled); subplot(212); plot(w,angle(X)/pi); xlabel(Omega/pi); title(Phase);axis tight hold on; stem(w2,angle(X_FFT)/pi,filled); (3)(3) n=0:3; x=2 -1 1 1; w=0:0.01*pi:2*pi; X1=x*exp(-j*n*w); X2=fft(x); 0123456 0 1 2 3 / Magnitude 0123456 -1 0 1 / Phase subplot(211); plot(w,abs(X1);axis tight; hold on; subplot(212); plot(w,angle(X1);axis tight; hold on; n=0:63; X2=fft(x,64); subplot(211); stem(n*2*pi/64,abs(X2),fill); subplot(212); stem(n*2*pi/64,angle(X2),fill); (4 4)可以由 DFT 计算 DTFT。 理由: 由实验结果波形看出,序列补零后,长度越长,DFT点数越多,其DFT越 逼近其DTFT的连续波形。所以,令序列补零至无穷长时,可由其DFT当做其 DTFT。 2、考察序列 x(n) = cos(0.48n) + cos(0.52n) (1)时,用DFT估计x(n)的频谱;将x(n)补零加长到长度为100 0 n 10 点序列用DFT估计x(n)的频谱。要求画出相应波形。 (2)时,用DFT估计x(n)的频谱,并画出波形。 0 n 100 (3)根据实验结果,分析怎样提高频谱分辨率。 n=0:10; x=cos(0.48*pi*n)+cos(0.52*pi*n); y=fft(x); subplot(211); stem(0:10,abs(y),fill); title(Magnitude); axis tight subplot(212); stem(0:10,angle(y)/pi,fill); title(Phase); axis tight 012345678910 0 2 4 6 8 Magnitude 012345678910 -0.5 0 0.5 Phase n=0:10; x=cos(0.48*pi*n)+cos(0.52*pi*n); x=x,zeros(1,89); y=fft(x); subplot(211); stem(0:99,abs(y),fill); title(Magnitude); axis tight subplot(212); stem(0:99,angle(y)/pi,fill); title(Phase); axis tight (2 2) n=0:100; x=cos(0.48*pi*n)+cos(0.52*pi*n); y=fft(x); subplot(211); stem(0:100,abs(y),fill); title(Magnitude); axis tight subplot(212); stem(0:100,angle(y)/pi,fill); title(Phase); axis tight (3 3) 减少栅栏效应的一个方法就是要使频域采样更密,即增加频域采样点数 N,在不改变 时域数据的情况下,只能在数据末端补零。但是,补零之后窗函数的宽度不能改变,此时 数据的实际长度仍为补零前的数据长度,故补零并不能提高频谱的分辨率。 由实验结果可看出0:10和0:100的分辨率相差很大, 所以我们可以通过增加时域内的 信号采样点数来提高分辨率,而补零并不能提高频谱的分辨率。 3、已知信号 ,其中, x(t) = 0.15sin(2f1t)+ sin(2f2t)- 0.1sin(2f3t)f1= 1Hz ,。从x(t)的表达式可以看出,它包含三个频率的正弦波, f2= 2Hzf3= 3Hz 但是从其时域波形(图E2-1)来看,似乎是一个正弦信号,利用DFT做频谱分析, 确定适合的参数,使得到的频谱的频率分辨率符合需要。 0102030405060708090 0 5 10 Magnitude 0102030405060708090 -0.5 0 0.5 Phase 0102030405060708090100 0 20 40 Magnitude 0102030405060708090100 -0.5 0 0.5 Phase 00.10.20.30.40.50.60.70.80.91 -1.5 -1 -0.5 0 0.5 1 1.5 由题意可知,要求频谱分辨率 FWp=2000*pi;Ws=3000*pi; fs=10000; Wp=Wp/fs;Ws=Ws/fs; Rp=1;As=15; OmegaC=Ws; E=power(power(10,Rp/10)-1),0.5); A=power(10,As/20); N=ceil(acosh(sqrt(A*A-1)/E)/acosh(Ws/Wp) 运行结果:N=4 调用 cheby2 函数 b3,a3=cheby2(N,As,Ws,s) 得到: b3 = 0.1778 0 1.2637 0 1.1225 a3 = 1.0000 2.3696 3.0322 1.9925 1.1225 脉冲响应不变法 bz,az=impinvar(b3,a3) w=0:500*pi/5
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号