logo资料库

北理工《信号与信息处理实验(Ⅱ)》实验报告(数字信号处理实验).pdf

第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
资料共53页,剩余部分请下载后查看
目 录
实验1 利用DFT 分析信号频谱
实验2 利用FFT 计算线性卷积
实验3 IIR 数字滤波器设计
实验4 FIR 数字滤波器设计
收获和体会
本科实验报告 实验名称:信号与信息处理实验(Ⅱ) 2018-2019-2 第 9,11 周 周一 3-5 节 第 15 周 周五 3-5 节 良乡图书馆 四层一号机房 √ 原理验证 □ 综合设计 □ 自主创新 课程名称: 任课教师: 数字信号处理 实验时间: 林艳飞 实验地点: 实验教师: 林艳飞/何冰松 学生姓名: 学号/班级: 学 院: 专 业: 实验类型: 组 号: 信息与电子学院 同组搭档: 电子信息工程 成 绩:
目 录 实验 1 利用 DFT 分析信号频谱 ······································································ 1 一、 实验目的 ·············································································································· 1 二、 实验原理 ·············································································································· 1 1. DFT 与 DTFT 的关系 ······················································································ 1 2. 利用 DFT 求 DTFT ·························································································· 1 3. 利用 DFT 分析连续时间信号的频谱 ······························································ 1 4. 可能用到的 MATLAB 函数与代码 ································································· 2 三、 实验内容 ·············································································································· 2 实验 2 利用 FFT 计算线性卷积 ······································································ 9 一、 实验目的 ·············································································································· 9 二、 实验原理 ·············································································································· 9 1. 线性卷积与圆周卷积 ·············································································· 9 2. 快速卷积 ································································································ 9 3. 分段卷积 ································································································ 9 4. 可能用到的 MATLAB 函数 ·································································· 10 三、 实验内容 ············································································································· 11 实验 3 IIR 数字滤波器设计 ··········································································· 16 一、 实验目的 ············································································································· 16 二、 实验原理 ············································································································· 16 1. 数字滤波器和模拟滤波器的一些指标 ··················································· 16 2. 模拟原型滤波器 ··················································································· 16 3. 模拟滤波器到数字滤波器的变换 ·························································· 21 4. 直接利用 MATLAB 函数设计设计 IIR 数字滤波器 ······························ 23 三、 实验内容 ············································································································· 24 实验 4 FIR 数字滤波器设计 ·········································································· 32 一、 实验目的 ············································································································· 32 二、 实验原理 ············································································································· 32 1. 线性相位 FIR 数字滤波器 ···································································· 32 2. 窗函数法设计 FIR 数字滤波器 ···························································· 33 3. 频率取样法设计 FIR 数字滤波器 ························································· 34 4. 利用 MATLAB 设计 FIR 数字滤波器 ··················································· 35 三、 实验内容 ············································································································· 36 收获和体会 ······································································································ 51 i
一、实验目的 实验 1 利用 DFT 分析信号频谱 1. 加深对 DFT 原理的理解。 2. 应用 DFT 分析信号的频谱。 3. 深刻理解利用 DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。 二、实验原理 1. DFT 与 DTFT 的关系 有限长序列 的 点 DFT—— 即序列 上的样本。 2. 利用 DFT 求 DTFT  方法 1:由 恢复出 由上图 进而有 其中内插函数 的 DTFT—— 上的 个取样值可表示为 在频率区间 内的 个等间隔分布的点 (1-1) 即为序列 的 DTFT 在 个等间隔频率点 的方法如图 1-1 所示 图 1-1 由 N 点 DFT 恢复 DTFT 的流程 (1-2) (1-3) (1-4)  方法 2:(常用于 MATLAB 计算)由于 DFT 是 DTFT 的取样值,其相邻两个频率样本点的间距为 ,所以 如果增加数据的长度 ,所得到的 DFT 谱线就更加精细,其包络就越接近 DTFT 的结果,这样就可以利用 DFT 来近似计算 DTFT。如果没有更多的数据,可以通过补零来增加数据长度。 3. 利用 DFT 分析连续时间信号的频谱 采用计算机分析连续时间信号的频谱,第一步就是把连续时间信号离散化,这里需要进行两个操作:一是 采样,二是截断。 对于连续时间非周期信号 ,按采样间隔 进行采样,截取长度为 ,那么 对 进行 点频域采样,有 (1-5) (1-6) 实验 1 利用 DFT 分析信号频谱 1
因此,用 DFT 分析连续时间非周期信号频谱的步骤为 1) 确定时域采样间隔 ,得到离散时间序列 2) 确定截取长度 ,得到 点离散序列 ; 3) 确定频域采样点数 ,要求 4) 利用 FFT 计算离散序列的 点 DFT,得到 5) 根据式(1-6)由 计算 ; ,这里 为窗函数; ; 采样点的近似值。 采用上述方法计算 的频谱,需要注意如下三个问题: 1) 频谱混叠。如果不满足采样定理的条件,频谱会出现混叠误差。对于频谱无限宽的信号,应考虑覆盖大部分 主要频率分量的范围。 2) 栅栏效应和频谱分辨率。使用 DFT 计算频谱,得到的结果只是 个频谱样本值,样本值之间的频谱是未知 的,像通过一个栅栏观察频谱,称为“栅栏效应”。频谱分辨率与记录长度成反比,要提高频谱分表率,就要 增加记录时间。 3) 频谱泄露。对信号截断会把窗函数的频谱引入信号频谱,照成频谱泄露。解决这个问题的主要办法是采用旁 瓣小的窗函数,频谱泄露和窗函数均会引起误差。 因此,要合理选取采样间隔和截取长度,必要时还需考虑加适当的窗。 对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可 以采用上述方法近似计算。 4. 可能用到的 MATLAB 函数与代码 ①DFT 运算:可采用 MATLAB 中提供的 fft 函数来实现。 ②DTFT 运算:可采用 MATLAB 矩阵运算的方法进行计算 三、实验内容 1. 已知 (1-7) 区间的波形。 ①计算其 DTFT,并画出 ②计算其 4 点 DFT,并把结果显示在①所画的图形中。 ③对 ④根据实验结果,分析是否可以由 DFT 计算 DTFT。如果可以,如何实现?  代码如下: 补零,计算 64 点 DFT,并显示结果。 x = [2 -1 1 1];n = 0:length(x)-1; w = -1.5*pi:0.01:2.5*pi;X = x*exp(-j*n'*w); %计算DFT N = input('请输入DFT的点数:'); Xk = fft(x,N); n1 = 0:N-1; k = 2*pi*n1/N; %构造序列x(n) %计算DTFT %计算x(n)的DFT,不足N位自动补零 %DFT中的k等于DTFT中的2*pi/N*n 实验 1 利用 DFT 分析信号频谱 2
%绘制图例并置于左下角 %绘制相位谱 %绘制DTFT的幅度谱 %绘制DFT的幅度谱 %绘制x=-π %绘制x=π subplot(211); plot(w,abs(X));hold on; stem(k,abs(Xk),'filled');hold on; plot([-pi -pi],ylim,'--');hold on; plot([pi pi],ylim,'--');hold off; title (['DFT(when $N$=',num2str(N),') and DTFT Magnitude of $x(n)$'],... 'Interpreter','latex'); xlabel('$\omega (k=\frac{\omega N}{2\pi})$','Interpreter','latex'); ylabel('Magnitude','Interpreter','latex'); set(gca,'Fontname','Latin Modern Math'); xlim([-1.1*pi 2.1*pi]); legend({'DTFT of $x(n)$','DFT of $x(n)$','$x=-\pi$','$x=\pi$'},... 'Location','southwest','Interpreter','latex'); subplot(212); plot(w,angle(X));hold on; stem(k,angle(Xk),'filled');hold on; plot([-pi -pi],ylim,'--');hold on; plot([pi pi],ylim,'--');hold off; title (['DFT(when $N$=',num2str(N),') and DTFT Phase of $x(n)$'],... 'Interpreter','latex'); xlabel('$\omega (k=\frac{\omega N}{2\pi})$','Interpreter','latex'); ylabel('Phase','Interpreter','latex'); set(gca,'Fontname','Latin Modern Math'); xlim([-1.1*pi 2.1*pi]); legend({'DTFT of $x(n)$','DFT of $x(n)$','$x=-\pi$','$x=\pi$'},... 'Location','southwest','Interpreter','latex'); %绘制幅度谱 %绘制DTFT的相位谱 %绘制DFT的相位谱 %绘制x=-π %绘制x=π %绘制图例并置于左下角  当分别从键盘键入 时的结果: 4 3 2 1 0 2 1 0 -1 -2 -3 -2 -1 -3 -2 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 实验 1 利用 DFT 分析信号频谱 3
4 3 2 1 0 2 1 0 -1 -2 -3 -2 -1 -3 -2 -1 0 0 1 1 2 2  分析是否可以由 DFT 计算 DTFT: 序列 的 4 点 DFT 64 点 DFT(通过对 补零得 64 位长度) 6 6 3 3 4 4 5 5 由 的 4 点、64 点 DFT 和 的 DTFT 的在 MATLAB 中显示的结果可以看出, 是 的取样。 且随着 的长度 通过补零增长,DFT 的点数 在变多,采样间隔 特征点越来越多,栅栏效应随之减弱,这样就可以很好地保留 DTFT。 在变小, 的 的更多关键信息,因此可以由 DFT 计算 保留 此外,序列的 DFT 可以看成是将序列 做周期延拓后求 DFS 取主周期后的结果,随着 的长度通 过补零增长,周期延拓后的序列 的周期性降低。由于在域变换中,周期性和离散性互为对应, 的周期 的离散性也在减弱。当 趋于无穷时, 性减弱, 故可以由 DFT 计算 DTFT。 就趋于连续,即 2. 考察序列 ① 时,用 DFT 估计 的频谱;将 补零加长到长度为 100 点序列,用 DFT 估计 的频谱。 要求画出相应波形。 时,用 DFT 估计 ② ③根据实验结果,分析怎样提高频谱分辨率。  问题分析: 由序列 的频谱,并画出波形。 知其最高频率 。考虑频谱混叠,由 Shannon 采样定理,采样频率 时不会出现频谱混叠。离散时间信号 可以看成是对 以采样频率 进行 n 点采样后得到的。考虑频谱泄露,当信号 的 频率 是 的整数倍(N 为采样点数,在程序中以 n 表征),即 实验 1 利用 DFT 分析信号频谱 4
也即 时不会发生频谱泄露。故对①,取 最小记录长度  代码如下: ;对②,取 。 n = 0:input('请输入采样点数 n=')-1; N = input('请输入 DFT 的点数 N='); k = 0:N-1; x = cos(0.48*pi*n)+cos(0.52*pi*n); Xk = fft(x,N); stem(abs(Xk),'filled'); title (['DFT Magnitude of $x(n)(0\leq n\leq$',num2str(max(n)),... ') when $N=$',num2str(N)],'Interpreter','latex'); xlabel('$k$','Interpreter','latex');ylabel('Magnitude','Interpreter','latex'); set(gca,'Fontname','Latin Modern Math'); %计算 x(n)的 DFT,不足 N 位自动补零 %绘制幅度谱  当分别从键盘键入 时的结果: 0 20 40 60 80 100 10 8 6 4 2 0 60 50 40 30 20 10 0 0 50 100 150  分析怎样提高频谱分辨率: 当 时,取样率不够高,记录长度小于最小记录长度 ,导致信号的频谱发生混叠。当 时,保 证了不发生频谱混叠,所得的频谱比较完美。并且通过补零后,频谱更多的分量被展现了出来。 综上,提高频谱分辨率的前提是采样频率满足 Shannon 采样定理,而后可以通过增加采样点数的方式提高 频谱分辨率,但补零只能细化频谱间隔,提高频谱密度,不能提高频谱分辨率。 实验 1 利用 DFT 分析信号频谱 5
3. 已知信号 ,其中 。从 的表达式可以看出,它包含三 个频率的正弦波。但是,从其时域波形(图 E1-1)来看,似乎是一个正 弦信号。利用 DFT 做频谱分析,确定适合的参数,使得到的频谱的 频率分辨率符合需要。  问题分析: 由信号 最高频率 样频率 的频率 是 知其 。考虑频谱混叠,由 Shannon 采样定理,采 时不会出现频谱混叠。考虑频谱泄露,当信号 的整数倍,即 也即 时不会发生频谱泄露。 最小记录长度  代码如下: 图 E1- 1 n = 0:input('请输入采样点数 n=')-1;k = n; fs = input('请输入采样频率 fs='); [f1,f2,f3] = deal(1,2,3); x = 0.15*sin(2*pi*f1*n/fs)+sin(2*pi*f2*n/fs)-0.1*sin(2*pi*f3*n/fs); Xk = fft(x); stem(k,abs(Xk),'filled'); title (['DFT Magnitude of $x(n)(0\leq n\leq$',num2str(max(n)),')',newline,... 'when $N=$',num2str(max(n)+1),',$f_s$=',num2str(fs)],'Interpreter','latex'); xlabel('$k$','Interpreter','latex'); ylabel('Magnitude','Interpreter','latex'); set(gca,'Fontname','Latin Modern Math'); %计算 x(n)的 N 点 DFT,不足 N 位自动补零 %绘制幅度谱  当从键盘键入 时的结果: MATLAB 运行结果 结果分析 X 2 Y 10 X 3 Y 1 10 8 6 4 X 1 2 Y 1.5 0 0 5 10 15 20 从频谱分析的结果来看, 的主要频 率分量分别在 的采样频率 的时候取到。此时 ,则对应的时域频率由 求出分别为 知 确实含有 但由于 。故由频谱分析 三个频率分量。 的分量较大,因此 的时域波形是类似 正弦波的形式。并且 注意到 的时域波形的峰值在 1 附近波动, 这些波动就是由两外两个频率分量引起的。 实验 1 利用 DFT 分析信号频谱 6
分享到:
收藏