4.(选作) 录制2秒声音信号,设定采样频率fs?7000Hz。设计一个IIR低通滤波器,用滤波器对信号进行滤波,画出滤波以后信号的时域波形和频谱,与原信号进行时域和频域的对比。
五、实验要求
1.要求熟练掌握建立脚本文件来实现实验内容。
2.在实验内容是实现时,要熟练掌握函数文本的建立和调用。
3.在实验报告中写出完整的自编程序,并给出实验结果。要求自编的实验程序不能只采用两种方法中的一种。
4.在绘制图形时要求图形的完整性,每个图形都要有图标标示。 5.在绘制图形时,坐标最好要一致,以方便对比。
五、思考题
1.双线性变换法设计数字滤波器的优缺点是什么? 2. IIR数字滤波器实现的原理是什么?
3.采样频率的变化对数字滤波器的设计有什么影响?
实验8 FIR数字滤波器设计
一、实验目的
1.加深对有限长单位冲击响应数字滤波器的理解
2.加深对有限长单位冲击响应数字滤波器的设计步骤 3.掌握使用MATLAB进行FIR滤波器设计的两种方法
4.掌握使用MATLAB绘制FIR滤波器的单位抽样响应并分析
二、实验方法与示例
1.MATLAB设计FIR数字滤波器相关文件
与FIR数字滤波器设计有关的MATLAB文件主要分为两类。一类是用于产生各种窗函数,另一类是用于设计FIR数字滤波器。 (1)窗函数:用于产生窗函数
用于产生窗函数的MATLAB文件有如下8个: 1)bartlett.m (三角窗)
2)blackman.m (布莱克曼窗) 3)boxcar.m (矩形窗) 4)hamming.m (海明窗) 5)hanning.m (汉宁窗) 6)triang.m (三角窗)
7)chebwin.m (切比雪夫窗) 8)kaiser.m (凯泽窗)
前七个函数的调用格式基本一致,以汉宁窗为例,其调用格式:win=hanning(N),N为窗函数的长度;凯泽窗的调用格式:win=kaiser(N,beta),beta为凯泽窗的参数β。 (2)fir1.m:采用窗函数法设计FIR数字滤波器
b=fir1(N,Wn) ① b=fir1(N,Wn,?high?) ② b=fir1(N,Wn,?stop?) ③
①~③式中N为滤波器的阶次,因此滤波器的长度为N+1;Wn是通带截止频率,其值在0~1之间,1对应采样频率的一半;b是设计好的滤波器系数h?n?。
对于格式①,若Wn是一标量,则可用来设计低通滤波器;若Wn是1?2的向量,则用来设计带通滤波器;若Wn是1?L的向量,则可用来设计L带滤波器,此时,格式将变为:b=fir1(N,Wn,?DC-1?)或b=fir1(N,Wn,?DC-0?),其中,前者保证第一个带为通带,后者保证第一个带为阻带。
格式②用来设计高通滤波器;格式③用来设计带阻滤波器。
值得注意是:在上述所有格式中,若不指定窗函数的类型,则fir1自动选择汉明窗。 2.MATLAB设计FIR数字滤波器
例8–1:用窗函数法设计一个线性相位FIR低通滤波器,并满足性能指标;通带边界频率?p?0.5?rad,阻带边界频率?s?0.66?rad,阻带衰减不小于40dB,通带波纹不大于3dB。
解:由题意,阻带衰减不小于40 dB,选择汉宁窗。
方法1:按照FIR滤波器的设计步骤,一步步来实现FIR滤波器的设计。程序清单如下:
clear all;close all;
%基于窗函数设计FIR滤波器 wp=0.5*pi;ws=0.66*pi;%性能指标 wdelta=ws-wp;%通带宽度
N=ceil(8*pi/wdelta) ;%滤波器长度 if rem(N,2)==0 %N取奇数 N=N+1;
end
Nw=N;%窗口长度
wc=(ws+wp)/2;%截止频率
n=0:N-1; %理想滤波器的冲激响应 alpha=(N-1)/2;
m=n-alpha+0.00001; hd=sin(wc*m)./(pi*m);
win=hanning(Nw);%汉宁窗的时域响应 h=hd.*win'; %滤波器实际冲激响应 b=h; figure(1)
stem(h); title('滤波器的单位抽样相应h(n)');xlabel('n');ylabel('h(n)') figure(2)
freqz(b,1,512);
程序运行结果N=50,如图8–1所示。
滤波器的单位抽样相应h(n)0.650Magnitude (dB)0-50-100-15000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.910.50.40.3h(n)0.20Phase (degrees)0.1-10000-2000-0.10102030n405060-300000.10.20.30.40.50.60.70.8Normalized Frequency (?? rad/sample)0.91
(a)滤波器的单位抽样响应(b) 数字低通滤波器的幅频响应和相位响应
图8–1 FIR滤波器的单位抽样响应和频率响应
分析:由运行结果可知窗口的长度为51,(a)图可看出此低通滤波器的单位抽样响应偶对称,满足第一类线性相位条件下N为奇数的情况。(b)图的幅频特性曲线可看出滤波器在通带和阻带内有波纹存在,是吉布斯效应的结果。(b)图的相频特性曲线可看出在通带内是线性相位,满足线性相位的要求。 注意:如果(b)图用以下指令实现:
[H,w]=freqz(b,1,512);
subplot 211 plot(w,20*log(abs(H))); subplot 212 plot(w,(angle(H))); 会发现相位出现卷绕。若一个角度从0变到2pi,但实际得到的结果是0~pi,再由-pi过~0,在w=pi处发生跳变,跳变幅度为2pi,这就叫相位的卷绕。unwrap(w)可以解卷绕,使相位在pi处不发生跳变,从而反应出真实的相位变化。即最后一条指令变为plot(w,unwrap(angle(H)))即可解卷绕。
方法2:直接调用fir1函数设计FIR滤波器。程序清单如下:
wp=0.5*pi;ws=0.66*pi;%性能指标 wdelta=ws-wp;%通带宽度
N=ceil(8*pi/wdelta) %滤波器长度 wn=(ws+wp)/2;%截止频率 h=fir1(N,wn/pi,hanning(N+1)); b=h;
freqz(b,1,512) figure(1)
stem(h); title('滤波器的单位抽样相应h(n)');xlabel('n');ylabel('h(n)') figure(2)
freqz(b,1,512);
程序运行结果与方法1相同。
三、实验内容
1.根据下列指标设计FIR数字高通滤波器:通带边界频率?p?4000?rad/s,阻带边界频率?p?2000?rad/s,阻带衰减?s?40dB,采样频率fs?10kHz。用MATLAB程序实现滤波器的设计,求得数字滤波器阶次,滤波器单位抽样相应图,幅频特性和相频特性图。
2.利用凯泽窗函数设计一个带通滤波器,阻带截止频率分别为1000Hz和2500Hz,,过渡带宽200Hz,采样频率fs?8kHz,阻带波纹不大于允差60dB,通带幅值为1。用MATLAB程序实现滤波器的设计,求得数字滤波器阶次,滤波器单位抽样相应图,幅频特性和相频特性图。
3. 设计一个24阶FIR带通滤波器,通带频率为0.35????0.65?
4.(选作) 录制2秒声音信号,设定采样频率fs?7000Hz。设计一个FIR高通滤波器,用滤波器对信号进行滤波,画出滤波以后信号的时域波形和频谱,与原信号进行时域和频域的对比。
四、实验要求
1.在实验报告中写出完整的自编程序,并给出实验结果。要求自编实验程序不能只采用两种方法中的一种。
2.在绘制图形时要求图形的完整性,每个图形都要有图标标示。 3.在绘制图形时,坐标最好要一致,以方便对比。
五、思考题
1.窗函数法设计FIR数字滤波器的原理是什么?
2.图8–1(b)数字低通滤波器的幅频响应和相位响应分别表示了系统输入和输出的那些特性?
3.数字滤波器模拟指标和数字指标之间的关系,如何转换? 附表:表六种窗函数的基本参数
窗函数 矩形窗 三角形窗 汉宁窗 海明窗 布莱克曼窗 凯泽窗(β=7.865)
窗谱性能指标 -13 -25 -31 -41 -57 -57
2 4 4 4 6
加窗后黎波器性能指标 0.9 2.1 3.1 3.3 5.5 5
-21 -25 -44 -53 -74 -80
旁瓣峰值/dB 主瓣宽度/(2π/N) 过渡带宽度/(2π/N) 阻带最小衰减/dB
实验9 综合实验1----心电信号的频谱分析
一、实验目的
1.熟练掌握使用MATLAB程序设计方法
2.掌握数字信号处理的基本概念、理论、方法
3.掌握序列离散傅里叶变换的MATLAB实现,并进行频谱分析 4.熟练掌握使用MATLAB设计IIR和FIR数字滤波器 5.学会用MATLAB对信号进行分析和处理
二、实验内容
1.对加随机噪声的心电信号进行处理
1)找到一段心电信号,画出心电信号的时域波形和频谱图(幅频和相频);
2)给该段心电信号加上随机噪声信号(噪声幅值为心电信号最大幅值的3%),画出加噪信号的时域波形和频谱图(幅频和相频);
3)根据心电信号频率范围及噪声的频率范围选择一种滤波器(高通,低通,带通,带阻中的一种)并设置滤波器性能指标,用窗函数法设计一个IIR滤波器以消除心电信号中的噪声干扰,画出滤波器的频率响应(幅频响应和相频响应)曲线;
4)用该滤波器对心电信号进行滤波,画出滤波以后心电信号的时域波形和频谱(幅频和相频);分析信号滤波前后的变化。 2.对加正弦噪声的心电信号进行处理
1)找到一段心电信号,画出心电信号的时域波形和频谱图(幅频和相频);
2)给该段心电信号加上50HZ正弦噪声信号(噪声幅值为心电信号最大幅值的3%),画出加噪信号的时域波形和频谱图(幅频和相频);
3)根据心电信号频率范围及噪声的频率范围选择一种滤波器(高通,低通,带通,带阻中的一种)并设置滤波器性能指标,用窗函数法设计一个FIR滤波器以消除心电信号中的噪声干扰,画出滤波器的频率响应(幅频响应和相频响应)曲线;
4)用该滤波器对心电信号进行滤波,画出滤波以后心电信号的时域波形和频谱(幅频和相频);分析信号滤波前后的变化。
三、实验要求
1.根据实验内容要求,自编程序进行实现。在实验报告中写出完整的自编程序,并给出实验结果。要求程序应具有通用性,整齐易懂,要求有注释。
2.在绘制图形时要求图形的完整性,设计结果中的图示要美观,整齐,有标题,有纵横坐标标示。
3.在绘制图形时,坐标最好要一致,以方便对比。
四、思考题
1.对于一段未知心电信号,如何判断心电信号中有哪些噪声,如何选择滤波器滤去对应的噪声?
2.心电信号常见的噪声有哪些,这些噪声的特点是什么?
实验10 综合实验2----三个同频带信号的频分复用
一、实验目的
1.熟练掌握使用MATLAB程序设计方法
2.掌握数字信号处理的基本概念、理论、方法
3.掌握序列离散傅里叶变换的MATLAB实现,并进行频谱分析 4.熟练掌握使用MATLAB设计IIR和FIR数字滤波器 5.学会用MATLAB对信号进行分析和处理
二、实验内容
1.利用MATLAB产生三个不同频率的正弦信号,将三路信号的频率范围设置不同(低频,中频,高频),(注意采样频率,中频信号频率设置在折叠频率一半附件,高频信号频率稍小于折叠频率)画出这三路信号的时域波形和频谱图;
2.将三路信号进行叠加合并为一路信号,画出这合并信号的时域波形和频谱图; 3.根据三路信号的频谱特点得到性能指标,由性能指标设计三个数字滤波器;
低通滤波器----对应的低频信号可以通过,其他两路信号不能通过, 带通滤波器----对应的中频信号可以通过,其他两路信号不能通过, 高通滤波器----对应的高频信号可以通过,其他两路信号不能通过, 画出三个滤波器的频率响应(幅频响应和相频响应)曲线;
4.分别用这三个滤波器对合并后的信号进行滤波,画出经过单个滤波器滤波以后所得信号的时域波形和频谱;
5.滤波后得到的三路信号与原来的三路信号进行比较分析。
三、实验要求
1.实验内容3中的滤波器要求分别使用IIR和FIR滤波器。滤波器的性能指标根据实验内容要求自行设计。
2.根据实验内容要求,自编程序进行实现。在实验报告中写出完整的自编程序,并给出实验结果。要求程序应具有通用性,整齐易懂,要求有注释。
3.在绘制图形时要求图形的完整性,设计结果中的图示要美观,整齐,有标题,有纵横坐标标示。
4.在绘制图形时,坐标最好要一致,以方便对比。
四、思考题
1.信号频分复用的原理是什么,有什么好处?
2.将实验处理对象三个不同频率的正弦信号中的低频信号换成心电信号进行实验。(注意采样频率)