《数字信号处理》实验指导书Word下载.docx
- 文档编号:19026195
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:21
- 大小:215.07KB
《数字信号处理》实验指导书Word下载.docx
《《数字信号处理》实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《《数字信号处理》实验指导书Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
用窗函数法
设计FIR数字滤波器
编写程序实现矩形窗、升余弦窗、改进升余弦窗和二阶升余弦窗的FIR数字滤波器
合计
8
实验一:
信号、系统及系统响应
实验学时:
实验类型:
验证
实验要求:
必修
一、实验目的
1、熟悉连续信号经理想采样前后的频谱变化关系,加深对采样定理的理解。
2、熟悉时域离散系统的时域特性。
3、利用卷积方法观察分析系统的时域特性。
4、掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。
二、实验内容
1、认真复习采样理论、离散信号与系统、线性卷积、序列的傅里叶变换及性质等有关内容。
2、编制实验用主程序及相应子程序,包括
(1)信号产生子程序,用于产生实验中要用到的下列信号序列:
a、采样信号序列:
对下面的连续信号:
(1.1)
进行采样,可得到采样序列
(1.2)
其中A为幅度因子,a为衰减因子,Ω0是模拟角频率,T为采样间隔。
这些参数都要在实验过程中由键盘输入,产生不同的xa(t)和xa(n)。
b、单位脉冲序列:
c、矩形序列:
(2)系统单位脉冲响应序列产生子程序。
本实验要用到两种FIR系统
a、
b、
(3)有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积。
可以直接调用MATLAB语言中卷积函数conv。
conv用于两个有限长度序列的卷积,它假定两个序列都从n=0开始。
调用格式如下:
y=conv(x,h)
其中参数x和y是两个已赋值的行向量序列。
在完成编制上述子程序的基础上,编制本实验主程序。
图1.1给出主程序流程框图,供参考。
图1.1
三、实验原理、方法和手段
采样是连续信号数字处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域发生的变化以及信号信息不丢失的条件,而且可以加深对傅里叶变换、Z变换和序列傅里叶变换之间关系式的理解。
我们知道,对一个连续信号xa(t)进行理想采样的过程可以用下式表示
(1.3)
其中
为
的理想采样,p(t)为周期冲激脉冲,即
(1.4)
的傅里叶变换
(1.5)
上式表明,
的周期延拓,其延拓周期为采样角频率
(Ωs=2π/T)。
只有满足采样定理时,才不会发生频率混叠失真。
在计算机上用高级语言编程,直接按照1.5式计算
的频谱
很不方便,下面导出用序列的傅里叶变换来计算
的公式。
将1.4式代入1.3式,并进行傅里叶变换,
(1.6)
式中的xa(nT)就是采样后的序列x(n),即:
x(n)=xa(nT)
x(n)的傅里叶变换为
(1.7)
比较1.7和1.6可知
(1.8)
说明两者之间只在频率度量上差一个常数因子T。
实验过程中应注意这一差别
离散信号和系统在时域均可以用序列来表示,序列图形给人以形象直观的印象,它可以加深我们对信号和系统的时域特征的理解。
本实验还将观察分析几种信号及系统的时域特性。
为了在数字计算机上观察分析各种序列的频域特性,通常对X(ejω)在
[0,2π]上进行M点采样来观察分析。
对长度为N的有限长序列x(n),有
(1.9)
通常M应取的大一些,以便观察谱的细节变化。
取模
可绘出幅频特性曲线。
一个时域离散线性非移变系统的输入/输出关系为
(1.10)
这里y(n)为系统的输出序列,x(n)为输出序列。
h(n)、x(n)可以是无限长,也可以是有限长,为了计算机绘图观察方便,主要讨论有限长情况。
如果h(n)和x(n)的长度分别为N和M,则y(n)的长度为L=N+M-1。
这样(1.10)式所描述的卷积运算就是序列移位、相乘和累加的过程,所以编程十分简单。
上述卷积运算也可以在频域实现
(1.11)
1.11式右边的相乘是在个频点{ωk}上的频谱值相乘。
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用集中授课形式为主的方式进行。
五、实验条件
1、计算机
2、matlab
图1.2|xa(jf)|
六、实验步骤
1、分析采样序列的特性,产生采样信号序列
xa(n),使
。
图1.2给出了连续信号xa(t)的幅频特性曲线。
由此图可以确定对xa(t)应采用的采样频率。
a、取采样频率fs=1kHz,即T=1ms。
观察所得
采样xa(n)的幅频特性
和图1.2中的
在折叠频率附近有无明显差别。
应当注意,实验中所得频率是用序列xa(n)的傅里叶变换公式求得的,所以在频率度量存在关系:
,ω为数字频率,Ω为模拟频率。
b、改变采样频率,fs=300Hz,观察
,并做记录(打印曲线);
进一步降低采样频率fs=200Hz,观察频谱混叠是否明显存在,说明原因,并记录(打印)这时的
曲线。
2、时域离散信号、系统和系统响应分析。
a、观察信号xb(n)和系统hb(n)的时域和频域特性;
利用线性卷积求信号xb(n)通过系统hb(n)的响应y(n),比较所求响应y(n)和hb(n)的时域和频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果。
b、观察系统ha(n)对信号xc(n)的响应特性。
利用线性卷积求系统响应y(n),并判断y(n)的图形及其非零值序列长度是否与理论结果一致,对xc(n)=ha(n)=R10(n),说出一种定性判断y(n)图形正确与否的方法,调用序列傅里叶变换数值计算子程序,求得
,观察
特性曲线,定性判断结果的正确性。
改变xc(n)的长度,取N=5,重复改实验。
注意参数变化的影响,说明变化前后的差异,并解释所得结果。
3、卷积定理的验证。
将实验2中的信号换成xa(n),使
,重复实验2a,打印
曲;
对主程序做简单修改,按式1.11计算
所得结果之间有无差异?
为什么?
七、思考题
1、在分析理想采样序列特性的实验中,采样频率不同时,相应的理想采样序列的傅里叶变换频谱的数字频率度量是否都相同?
它们所对应的模拟频率是否相同?
2、在卷积定理验证的实验中,如果选用不同的频域采样点数M值,例如,选M=10和M=20,分别做序列的傅里叶变换,求得
八、实验报告
1、简述实验目的及实验原理。
2、按照实验步骤附上实验过程中的信号序列、系统单位脉冲响应及系统响应序列的时域和幅频特性曲线,并对所得结果进行分析和解释。
3、总结实验中的主要结论。
4、简要回答思考题。
九、其它说明
实验二:
用FFT作谱分析
1、进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)
2、熟悉FFT算法原理和FFT子程序的应用
3、学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT
1、对以下信号逐个进行谱分析
(2.1)
下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的采样频率fs,供实验时参考。
x1(n),x2(n),x3(n),x4(n),x5(n):
N=8,16
x6(t):
fs=64(Hz),N=16,32,64
2、令x(n)=x4(n)+x5(n),用FFT计算8点和16点离散傅里叶变换,
X(k)=DFT[x(n)]
并根据DFT的对称性,由X(k)求出X4(k)=DFT[x4(n)]和X5(k)=DFT[x5(n)],并与1中所得的结果进行比较。
[提示:
取N=16时,x4(n)=x4(N-n),x5(n)=-x5(N-n)]
3、令x(n)=x4(n)+jx5(n),重复2。
参考教材第三章、第四章。
根据本实验的特点、要求和具体条件,采用集中授课为主的方式进行。
1、复习DFT的定义、性质和用DFT作谱分析的有关内容。
2、复习FFT算法原理与编程思想,并对照DFT-FFT运算流图和程序框图,读懂本实验提供的FFT子程序。
3、编制信号产生子程序,产生式2.1中的典型信号供谱分析用。
应当注意,如果给出的是连续信号xa(t),则首先要根据其最高频率确定采样速率fs以及由频率分辨率选择采样点数N,然后对其进行软件采样(即计算x(n)=xa(nT),0≤n≤N-1),产生对应序列x(n)。
对信号x6(t),频率分辨率的选择要以能分辨开其中的三个频率对应的谱线为准则。
对周期序列,最好截取周期的整数倍进行谱分析,否则有可能产生较大的分析误差。
请实验者根据DFT的隐含周期性思考这个问题。
4、编写主程序,图2.1给出了主程序框图,供参考。
5、按实验内容要求,上机实验,并写出实验报告。
本实验的主程序比较简单,直接根据图2.1所给的框图编写程序即可。
编程的难点是FFT子程序。
不过,各种语言的FFT子程序都可在有关信号处理的程序库中找到。
由于C语言当前最普及,所以为了为实验提供方便,下面给出C语言FFT函数,供参考。
图2.1
/*DIT——FFT函数(C语言)*/
fft——基2DIT——FFT函数
要求:
指向复数数组指针X,FFT长度为2m,m为正整数
FFT输出结果放在输入复数数组中。
/*计算N点FFT子程序*/
/*xr:
=信号序列实部,xi:
=信号序列虚部,N=FFT变换区间长度N=2^M*/
/*如果信号长度小于N,应该给xr,xi后面补0*/
/*计算结果X(k)的实部和虚部分别存储在数组xr和xi中*/
voidFft(doublexr[],doublexi[],intN,intM)
{
intL,B,J,P,k,I;
doublerPartKB,iPartKB;
/*分别代表X(K+B)的实部和虚部*/
doublerCf[128],iCf[128];
/*rCf存储旋转因子实部,iCf存储旋转因子虚部*/
/*旋转因子数组长度应根据自己需要调整*/
/*计算旋转因子*/
doublePI2=8.0*aran(1.0)
for(i=0;
i<
N,i++)
{rCf[i]=cos(i*PI2/N);
iCf[i]=sin(i*PI2/N);
}
ChangeOrder(xr,xi,N);
/*调用倒序子程序*/
/*计算各级蝶形*/
for(L=1;
L<
=M;
L++)
{
B=(int)(pow(2,(L-1))+0.5);
for(J=0;
J<
=B-1;
J++)
P=J*(int)(pow(2,(M-L))+0.5);
rPartKB=xr[k+B]*rCf[P]-xi[k+B]*rCf[P];
iPartKB=xi[k+B]*rCf[P]+xr[k+B]*rCf[P];
xr[r+B]=xr[k]–rPartKB;
xi[r+B]=xi[k]–iPartKB;
xr[k]=xr[k]+rPartKB;
xi[k]=xi[k]+iPartKB;
/*倒序子程序*/
voidChangeOrder(doublexr[],doublexi[],intN)
intLH,N1,I,J,K;
doubleT;
LH=N/2;
J=LH;
N1=N-2;
for(I=1;
I<
N1;
I++)
if(I<
J)
T=xr[I];
xr[I]=xr[J];
xr[J]=T;
T=xi[I];
xi[I]=xi[J];
xi[J]=T;
K=LH;
While(J>
=K)
J=J-K;
K=(int)(K/2+0.5);
J=J+K;
1、在N=8时,x2(n)和x3(n)的幅频特性会相同吗?
N=16呢?
2、如果周期信号的周期预先不知道,如何用FFT进行谱分析呢?
1、简述实验原理及目的。
2、结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。
3、总结实验所得主要结论。
实验三:
用双线性变换法设计IIR数字滤波器
1、熟悉用双线性变换法设计IIR数字滤波器的原理与方法。
2、掌握数字滤波器的计算机仿真方法。
3、通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
1、用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。
设计指标参数为在通频带内频率低于0.2π时,最大衰减小于1dB;
在阻带内[0.3π,π]频率区间上,最小衰减大于15dB。
2、以0.02π为采样间隔,打印出数字滤波器在频率区间[0,π/2]上的幅频响应特性曲线。
3、用所设计的滤波器对实际心电图信号采样序列(在本实验后面给出)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
参考教材第六章
1、复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计IIR数字滤波器的内容,用双线性变换法设计数字滤波器,使其系统函数
(3.1)
式中
(3.2)
由3.1和3.2式可见,滤波器H(z)由三个二阶滤波器H1(z)、H2(z)和H3(z)级联组成,如下图所示
图3.1滤波器H(z)的组成
2、编写滤波器仿真程序,计算H(z)对心电图信号采样序列x(n)的响应序列y(n)。
设
为第k级二阶滤波器Hk(z)的输出序列,
为输入序列,如图3.1所示,由3.2式可得到差分方程
(3.3)
当k=1时,
所以H(z)对x(n)的总响应序列y(n)可以用顺序迭代算法得到。
即依次对k=1,2,3,求解差分方程3.3,最后得到
仿真程序就是实现上述求解差分方程和顺序迭代算法的通用程序。
也可以直接调用MATLABfilter函数实现仿真
3、在通用滤波器上运行仿真滤波程序,利用MATLAB绘图,完成实验内容2、和3
1、用双线性变换法设计数字滤波器过程中,变换公式
中T的数值,对设计结果有无影响?
1、简述实验目的及原理。
2、由所打印的
特性曲线及设计过程简述双线性变换法的特点。
3、对比滤波前后的心电图信号波形,说明数字滤波器的滤波过程与滤波作用。
心电图信号采样序列x(n)
人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波处理后才能作为判断心脏功能的有用信息。
下面给出一实际心电图信号采样序列样本x(n),其中存在高频干扰。
在实验中,以x(n)作为输入序列,滤除其中的干扰成分。
{x(n)}={-4,-2,0,-4,-6,-4,-2,-4,-6,-6,
-4,-4,-6,-6,-2,6,12,8,0,-16
-38,-60,-84,-90,-66,-32,-4,-2,-4,-8
12,12,10,6,6,6,4,0,0,0
0,0,-2,-4,0,0,0,-2,-2,0
0,-2,-2,-2,-2,0,}
实验四:
用窗函数法设计FIR数字滤波器
1、掌握用窗函数法设计FIR数字滤波器的原理和方法。
2、熟悉线性相位FIR数字滤波器特性。
3、了解各种窗函数对滤波器特性的影响。
1、用升余弦窗设计一线性相位低通FIR数字滤波器,截止频率
窗口长度N=15,33。
要求在两种窗口长度情况下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB带宽和20dB带宽。
总结窗口长度N对滤波特性的影响。
设计低通FIR数字滤波器时,一般以理想低通滤波特性为逼近函数
,即
,其中
2、
,用四种窗函数设计线性相位低通滤波器。
绘制相应的幅频特性曲线,观察3dB和20dB带宽以及阻带最小衰减,比较四种窗函数对滤波特性的影响。
如果所希望的滤波器理想频率响应函数为
,则其对应的单位脉冲响应
为
(4.1)
窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼近hd(n)。
由于hd(n)往往是无限长序列,且是非因果的,所以用窗函数ω(n)将hd(n)截断,并进行加权处理,得到:
h(n)=hd(n)ω(n)(4.2)
h(n)就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数
为:
(4.3)
式中,N为所选窗函数ω(n)的长度。
用窗函数法设计的滤波器性能取决于窗函数ω(n)的类型及窗口长度N的取值。
设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N。
这样选定窗函数类型和长度N后,求出单位脉冲响应h(n)=hd(n)·
ω(n),并按式4.3的要求求出
是否满足要求,要进行验算。
一般在h(n)尾部加零使长度满足2的整数次幂,以便用FFT计算
如果要观察细节,补零点数增多即可。
如果
不满足要求,则要重新选择窗函数类型和长度N,再次进行验算,直至满足要求。
如果要求线性相位特性,则h(n)还必须满足:
h(n)=±
h(N-1-n)
根据上式中的正、负号和长度N的奇、偶性又将线性相位FIR滤波器分成四类。
要根据所设计的滤波器特性正确选择其中一类。
例如,要设计线性相位低通特性,可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。
1、复习用窗函数法设计FIR数字滤波器一节内容,阅读本实验原理,掌握设计步骤。
2、编写程序。
(1)编写能产生矩形窗、升余弦窗、改进升余弦窗和二阶升余弦窗的窗函数子程序。
(2)编写主程序,主程序框图如图4.1所示,仅供参考,其中幅度特性要求用dB表示。
图4.1用窗函数法设计滤波器主程序框图
画图时,用20lg|H(k)|打印幅度特性。
用k点对应的频率
为使曲线包络更接近
的幅度特性曲线,DFT变换区间要选大些。
例如窗口长度N=33时,可通过在h(n)末尾补零的方法,使长度变为64,再进行64点DFT,则可得到更精确的幅度衰减特性曲线。
FFT子程序参考实验一,也可以调用MATLABA函数fft实现。
1、如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?
写出设计步骤。
2、如果要求用窗函数法设计带通滤波器,且给定上、下边带截止频率为ω1和ω2,实求理想带通的单位脉冲响应hd(n)。
2、按照实验步骤及要求,比较各种情况下的滤波性能,说明窗口长度N和窗函数类型对滤波特性的影响。
3、总结用窗函数法设计FIR滤波器的主要特点。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号处理 数字信号 处理 实验 指导书