第 10章 上 机实验第 10章 上 机实验
10.1 引言
10.2 关于实验用计算机语言
10.3 实验一,信号,系统及系统响应
10.4 实验二,用 FFT作谱分析
10.5 实验三,用双线性变换法设计 IIR数字滤波器
10.6 实验四,用窗函数法设计 FIR数字滤波器第 10章 上 机实验
10.1 引言第一,二章是全书的基础内容。
第三,四章 DFT,FFT是数字信号处理的重要数学工具,它有广泛的使用内容。
第 10章 上 机实验
10.2 关于实验用计算机语言
MATLAB是一种交互式的以矩阵为基本数据结构的系统 。 在生成矩阵对象时,不要求明确的维数说明 。
所谓交互式,是指 MATLAB的草稿纸编程环境 。
与 C语言或 FORTRON语言作科学数值计算的程序设计相比较,利用 MATLAB可节省大量的编程时间 。
第 10章 上 机实验
10.3 实验一,信号,系统及系统响应
1,实验目的
(1) 熟悉连续信号经理想采样前后的频谱变化关系,
加深对时域采样定理的理解 。
(2) 熟悉时域离散系统的时域特性 。
(3) 利用卷积方法观察分析系统的时域特性 。
(4) 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号,离散信号及系统响应进行频域分析 。
第 10章 上 机实验
2,实验原理与方法采样是连续信号数字处理的第一个关键环节。
对一个连续信号 xa(t)进行理想采样的过程可用
(10.3.1)式表示 。
^ ( ) ( ) ( )
a ax t x t p t? (10.3.1)
其中 (t)为 xa(t)的理想采样,p(t)为周期冲激脉冲,即
^x
( ) ( )
n
p t t n T?
(10.3.2)
(t)的傅里叶变换 (jΩ)为^x ^
aX
1( ) [ ( ) ]
a as
m
X j X j mT
(10.3.3)
第 10章 上 机实验将 (10.3.2)式代入 (10.3.1)式并进行傅里叶变换,
^
( ) [ ( ) ( ) ]
( ) ( )
()
jt
a
a
n
jt
a
n
jt
a
n
X j x t t n T e d t
x t t n T e d t
x n T e d t
式中的 xa(nT)就是采样后得到的序列 x(n),即
( ) ( )ax n x n T?
x(n)的傅里叶变换为
(10.3.4)
( ) ( )j j n
n
X e x n e
(10.3.5)
第 10章 上 机实验比较 (10.3.5)和 (10.3.4)可知
^ ( ) ( )j
a TX j X e
(10.3.6)
在数字计算机上观察分析各种序列的频域特性,
通常对 X(ejω)在 [ 0,2π] 上进行 M点采样来观察分析 。 对长度为 N的有限长序列 x(n),有
1
0
( ) ( )
2
,0,1,,1
k
N
jnjk
n
k
X e x m e
k k M
M
一个时域离散线性非移变系统的输入 /输出关系为其中
( ) ( ) ( ) ( ) ( )
m
y n x n h n x m h n m
(10.3.8)
第 10章 上 机实验上述卷积运算也可以在频域实现
3,实验内容及步骤
(1) 认真复习采样理论,离散信号与系统,线性卷积,序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法 。
(2) 编制实验用主程序及相应子程序 。
① 信号产生子程序,用于产生实验中要用到的下列信号序列:
xa(t)=Ae-at sin(Ω0t)u(t)
( ) ( ) ( )j j jY e X e H e (10.3.9)
第 10章 上 机实验进行采样,可得到采样序列
xa(n)=xa(nT)=Ae-anT sin(Ω0nT)u(n),0≤n<50
其中 A为幅度因子,a为衰减因子,Ω0是模拟角频率,T为采样间隔 。 这些参数都要在实验过程中由键盘输入,产生不同的 xa(t)和 xa(n)。
b,单位脉冲序列,xb(n)=δ(n)
c,矩形序列,xc(n)=RN(n),N=10
② 系统单位脉冲响应序列产生子程序 。 本实验要用到两种 FIR系统 。
a,ha(n)=R10(n);
b,hb(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)
第 10章 上 机实验
③ 有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积 。 可以直接调用 MATLAB语言中的卷积函数 conv。 conv用于两个有限长度序列的卷积,
它假定两个序列都从 n=0 开始 。 调用格式如下:
y=conv (x,h)
第 10章 上 机实验图 10.3.1 实验一的主程序框图开始调用信号产生子程序,产生信号序列 x ( n )
调用序列傅氏变换数值计算子程序,求 X ( e )
两次调用绘图子程序,分别绘制 x ( n ),X ( e ) 图形
j ω
改变信号序列否?
调用系统单位脉冲响应序列产生子程序,求 h ( n )
调用傅氏变换数值计算子程序,求 H ( e )
j ω
两次调用绘图子程序,分别绘制 h ( n ),H ( e ) 图形
j ω
改变 h ( n ) 否?
调用卷积子程序,求 y ( n ) = x ( n ) * h ( n )
调用傅氏变换数值计算子程序,求 Y ( e k )
jω
两次调用绘图子程序,分别绘制 y ( n ),Y ( e k ) 图形
jω
结束
Y
Y
N
N
k
k
k
j ω
k
第 10章 上 机实验图 10.3.2 xa(t)的幅频特性曲线
1
0,8
0,6
0,4
0,2
0
0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0
x
a
(j
f
)
f / H z
第 10章 上 机实验
(3) 调通并运行实验程序,完成下述实验内容:
① 分析采样序列的特性。
a,取采样频率 fs=1 kHz,即 T=1 ms。
b,改变采样频率,fs=300 Hz,观察 |X(ejω)|的变化,
并做记录 (打印曲线 ); 进一步降低采样频率,fs=200
Hz,观察频谱混叠是否明显存在,说明原因,并记录 (打印 )这时的 |X(ejω)|曲线 。
第 10章 上 机实验
② 时域离散信号,系统和系统响应分析 。
a,观察信号 xb(n)和系统 hb(n)的时域和频域特性;
利用线性卷积求信号 xb(n)通过系统 hb(n)的响应 y(n),
比较所求响应 y(n)和 hb(n)的时域及频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果 。
b,观察系统 ha(n)对信号 xc(n)的响应特性。
③ 卷积定理的验证。
第 10章 上 机实验
4,思考题
(1) 在分析理想采样序列特性的实验中,采样频率不同时,相应理想采样序列的傅里叶变换频谱的数字频率度量是否都相同? 它们所对应的模拟频率是否相同?
为什么?
(2) 在卷积定理验证的实验中,如果选用不同的频域采样点数 M值,例如,选 M=10和 M=20,分别做序列的傅里叶变换,求得
( ) ( ) ( ),0,1,,1k k kj j jaY e X e H e k M
所得结果之间有无差异? 为什么?
第 10章 上 机实验
5,实验报告要求
(1) 简述实验目的及实验原理 。
(2) 按实验步骤附上实验过程中的信号序列,系统单位脉冲响应及系统响应序列的时域和幅频特性曲线,
并对所得结果进行分析和解释 。
(3) 总结实验中的主要结论 。
(4) 简要回答思考题 。
第 10章 上 机实验
10.4 实验二,用 FFT作谱分析
1.实验目的
(1) 进一步加深 DFT算法原理和基本性质的理解 (因为 FFT只是 DFT的一种快速算法,所以 FFT的运算结果必然满足 DFT的基本性质 )。
(2) 熟悉 FFT算法原理和 FFT子程序的应用 。
(3) 学习用 FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用 FFT。
第 10章 上 机实验
2.实验步骤
(1) 复习 DFT的定义,性质和用 DFT作谱分析的有关内容 。
(2) 复习 FFT算法原理与编程思想,并对照 DIT-
FFT运算流图和程序框图,读懂本实验提供的 FFT子程序 。
(3) 编制信号产生子程序,产生以下典型信号供谱分析用:
第 10章 上 机实验
14
2
3
( ) ( )
1,0 3
( ) 8 4 7
0
4 0 3
( ) 3 4 7
0
x n R n
nn
x n n n
nn
x n n n
其它 n
其它 n
4
5
6
( ) c o s
4
( ) si n
8
( ) c o s 8 c o s 1 6 c o s 2 0
x n n
x n n
x n t t t
第 10章 上 机实验
(4) 编写主程序 。
图 10.4.1 给出了主程序框图,供参考 。 本实验提供 FFT子程序和通用绘图子程序 。
(5) 按实验内容要求,上机实验,并写出实验报告 。
第 10章 上 机实验图 10.4.1 主程序框图读入长度 N
开始调用信号产生子程序产生实验信号调用绘图子程序( 函数)
绘制时间序列波形图调用 F F T 子程序( 函数)
计算信号的 D F T
调用绘图 子程序( 函数)
绘制 X ( k ) 曲线结束第 10章 上 机实验
3,上机实验内容
(1) 对 2 中所给出的信号逐个进行谱分析 。 下面给出针对各信号的 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)]
(3) 令 x(n)=x4(n)+jx5(n),重复 (2)。
第 10章 上 机实验
4,思考题
(1) 在 N=8时,x2(n)和 x3(n)的幅频特性会相同吗? 为什么? N=16呢?
(2) 如果周期信号的周期预先不知道,如何用 FFT进行谱分析?
5,实验报告要求
(1) 简述实验原理及目的 。
(2) 结合实验中所得给定典型序列幅频特性曲线,
与理论结果比较,并分析说明误差产生的原因以及用
FFT作谱分析时有关参数的选择方法 。
(3) 总结实验所得主要结论 。
(4) 简要回答思考题 。
第 10章 上 机实验
6,实验用子程序本实验的主程序比较简单,直接根据图 10.4.1 所给框图编写程序即可 。 编程难点是 FFT子程序 。
/* 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中 */
第 10章 上 机实验
void Fft(double xr[ ],double xi[ ],int N,int M)
{
int L,B,J,P,k,i;
double rPartKB,iPartKB;/*分别代表 X(K+B)的实部和虚部 */
double rCf[ 128],iCf[ 128] ;/*rCf存储旋转因子实部,iCf
存储旋转因子虚部 */
/*旋转因子数组长度应根据自己需要调整 */
/*计算旋转因子 */
第 10章 上 机实验
double PI2= 8.0*atan(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);
第 10章 上 机实验
for(J=0;J<=B-1;J++)
{
P = J*((int)(pow(2,(M-L))+0.5));
for(k=J;k<=N-1;k+=(int)(pow(2,L)+0.5))
{
rPartKB = xr[ k+B] *rCf[ P] -xi[ k+B]
*iCf[ P]
iPartKB = xi[ k+B] *rCf[ P] +xr[ k+B]
*iCf[ P]
第 10章 上 机实验
xr[ k+B] = xr[ k] - rPartKB;
xi[ k+B] = xi[ k] - iPartKB;
xr[ k] = xr[ k] + rPartKB;
xi[ k] = xi[ k] + iPartKB;
}
}
}
}
/*倒序子程序 */
第 10章 上 机实验
void ChangeOrder(double xr[ ],double xi[ ],int N)
{
int LH,N1,I,J,K;
double T;
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
第 10章 上 机实验
}
K = LH;
while(J>=K)
{
J=J-K;
K=(int)(K/2+0.5);
}
J=J+K;
}
}
第 10章 上 机实验
10.5 实验三,用双线性变换法设计
IIR数字滤波器
1,实验目的
(1) 熟悉用双线性变换法设计 IIR数字滤波器的原理与方法 。
(2) 掌握数字滤波器的计算机仿真方法 。
(3) 通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
第 10章 上 机实验
2,实验内容
(1) 用双线性变换法设计一个巴特沃斯低通 IIR数字滤波器。
(2) 以 0.02π为采样间隔,打印出数字滤波器在频率区间 [ 0,π/2] 上的幅频响应特性曲线 。
(3) 用所设计的滤波器对实际心电图信号采样序列
(在本实验后面给出 )进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果 。
第 10章 上 机实验
3,实验步骤
(1) 复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计 IIR数字滤波器的内容,按照例 6.4.2,用双线性变换法设计数字滤波器系统函数 H(z)。
例 6.4.2 中已求出满足本实验要求的数字滤波器系统函数:
16
1 2 1 2 1 2
0.0007378 ( 1 )()
( 1 1.268 0.705 ) ( 1 1.0106 0.3583 ) ( 1 0.904 0.215 )
zHz
z z z z z z
3
1
()k
K
Hz
(10.5.1)
第 10章 上 机实验
A=0.090 36
B1=1.2686,C1=-0.7051
B2=1.0106,C2=-0.3583
B3=0.9044,C3=-0.2155
12
12
( 1 2 )( ),1,2,3
1k kk
A z zH z k
B z C z
(10.5.2)
由 (10.5.1)式和 (10.5.2)式可见,滤波器 H(z)由三个二阶滤波器 H1(z),H2(z)和 H3(z)级联组成,如图
10.5.1 所示 。
第 10章 上 机实验图 10.5.1 滤波器 H(z)的组成
x ( n )
H
1
( z ) H
2
( z ) H
3
( z )
y
1
( n ) y
2
( n ) y
3
( n ) = y ( n )
H ( z )
第 10章 上 机实验
(2) 编写滤波器仿真程序,计算 H(z)对心电图信号采样序列 x(n)的响应序列 y(n)。 设 yk(n)为第 k级二阶滤波器 Hk(z)的输出序列,y k-1 (n)为输入序列,如图 10.5.1
所示 。 由 (10.5.2)式可得到差分方程:
yk(n)=Ay k-1 (n)+2Ay k-1 (n-1)+Ay k-1
(n-2)+Bkyk(n-1)+Ckyk(n-2) (10.5.3)
(3) 在通用计算机上运行仿真滤波程序,并调用通用绘图子程序,完成实验内容 (2)和 (3)。
第 10章 上 机实验
4,思考题用双线性变换法设计数字滤波器过程中,变换公式中 T的取值,对设计结果有无影响? 为什么?
5,实验报告要求
(1) 简述实验目的及原理 。
(2) 由所打印的 |H(ejω)|特性曲线及设计过程简述双线性变换法的特点 。
(3) 对比滤波前后的心电图信号波形,说明数字滤波器的滤波过程与滤波作用 。
(4) 简要回答思考题 。
1
1
21
1
zs
Tz
第 10章 上 机实验
6,心电图信号采样序列 x(n)
人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息 。 下面给出一实际心电图信号采样序列样本 x(n),其中存在高频干扰 。 在实验中,以
x(n)作为输入序列,滤除其中的干扰成分 。
第 10章 上 机实验
{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}
第 10章 上 机实验
10.6 实验四,用窗函数法设计
FIR数字滤波器
1,实验目的
(1) 掌握用窗函数法设计 FIR数字滤波器的原理和方法 。
(2) 熟悉线性相位 FIR数字滤波器特性 。
(3) 了解各种窗函数对滤波特性的影响。
第 10章 上 机实验
2,实验原理与方法如果所希望的滤波器的理想频率响应函数为
Hd(e jω),则其对应的单位脉冲响应为
1( ) ( )
2
j j n
ddh n H e e d
(10.6.1)
用窗函数 w(n)将 hd(n)截断,并进行加权处理,得到,
( ) ( ) ( )dh n h n n (10.6.2)
h(n)就作为实际设计的 FIR数字滤波器的单位脉冲响应序列,其频率响应函数 H(e jω)为
1
0
( ) ( )
N
j j n
n
H e h n e
(10.6.3)
第 10章 上 机实验如果要求线性相位特性,则 h(n)还必须满足:
根据上式中的正,负号和长度 N的奇偶性又将线性相位 FIR滤波器分成四类 。 要根据所设计的滤波特性正确选择其中一类 。 例如,要设计线性相位低通特性,可选择 h(n)=h(N-1-n)一类,而不能选 h(n)=-h(N-1-
n)一类 。
( ) ( 1 )h n h N n
第 10章 上 机实验
3,实验内容及步骤
(1) 复习用窗函数法设计 FIR数字滤波器一节内容,
阅读本实验原理,掌握设计步骤 。
(2) 编写程序 。
① 编写能产生矩型窗,升余弦窗,改进升余弦窗和二阶升余弦窗的窗函数子程序 。
② 编写主程序 。 主程序框图如图 10.6.1 所示,仅供参考 。 其中幅度特性要求用 dB表示 。
第 10章 上 机实验图 10.6.1 用窗函数法设计滤波器主程序框图读入窗口长度 N
开始调用窗函数子程序求 w ( n )
调用 子程序( 函数) 计算
H ( k ) = D F T [h ( n )]
调用绘图 子程序( 函数)
绘制 H ( k ) 幅度相位 曲 线结束计算 h
d
( n )
计算 h ( n ) = h
d
( n ) w ( n )
第 10章 上 机实验设
22
( ) [ ( ) ]
( ) ( ) ( )
( ) ( ) ( )
kI
RI
H k D FT h n
H k H k jH k
H k H k H k
第 10章 上 机实验
(3) 上机实验内容。
,
()
0
1
2
11
( ) ( )
22
si n ( )
()
c
c
ja
cj
d
c
j j n j a j n
dd
c
e
He
N
a
h n H e e e e d
na
na
其中第 10章 上 机实验
4.思考题
(1) 如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器? 写出设计步骤 。
(2) 如果要求用窗函数法设计带通滤波器,且给定上,下边带截止频率为 ω1和 ω2,试求理想带通的单位脉冲响应 hd(n)。
第 10章 上 机实验
5.实验报告要求
(1) 简述实验目的及原理 。
(2) 按照实验步骤及要求,比较各种情况下的滤波性能,说明窗口长度 N和窗函数类型对滤波特性的影响 。
(3) 总结用窗函数法设计 FIR滤波器的主要特点 。
(4) 简要回答思考题。
10.1 引言
10.2 关于实验用计算机语言
10.3 实验一,信号,系统及系统响应
10.4 实验二,用 FFT作谱分析
10.5 实验三,用双线性变换法设计 IIR数字滤波器
10.6 实验四,用窗函数法设计 FIR数字滤波器第 10章 上 机实验
10.1 引言第一,二章是全书的基础内容。
第三,四章 DFT,FFT是数字信号处理的重要数学工具,它有广泛的使用内容。
第 10章 上 机实验
10.2 关于实验用计算机语言
MATLAB是一种交互式的以矩阵为基本数据结构的系统 。 在生成矩阵对象时,不要求明确的维数说明 。
所谓交互式,是指 MATLAB的草稿纸编程环境 。
与 C语言或 FORTRON语言作科学数值计算的程序设计相比较,利用 MATLAB可节省大量的编程时间 。
第 10章 上 机实验
10.3 实验一,信号,系统及系统响应
1,实验目的
(1) 熟悉连续信号经理想采样前后的频谱变化关系,
加深对时域采样定理的理解 。
(2) 熟悉时域离散系统的时域特性 。
(3) 利用卷积方法观察分析系统的时域特性 。
(4) 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号,离散信号及系统响应进行频域分析 。
第 10章 上 机实验
2,实验原理与方法采样是连续信号数字处理的第一个关键环节。
对一个连续信号 xa(t)进行理想采样的过程可用
(10.3.1)式表示 。
^ ( ) ( ) ( )
a ax t x t p t? (10.3.1)
其中 (t)为 xa(t)的理想采样,p(t)为周期冲激脉冲,即
^x
( ) ( )
n
p t t n T?
(10.3.2)
(t)的傅里叶变换 (jΩ)为^x ^
aX
1( ) [ ( ) ]
a as
m
X j X j mT
(10.3.3)
第 10章 上 机实验将 (10.3.2)式代入 (10.3.1)式并进行傅里叶变换,
^
( ) [ ( ) ( ) ]
( ) ( )
()
jt
a
a
n
jt
a
n
jt
a
n
X j x t t n T e d t
x t t n T e d t
x n T e d t
式中的 xa(nT)就是采样后得到的序列 x(n),即
( ) ( )ax n x n T?
x(n)的傅里叶变换为
(10.3.4)
( ) ( )j j n
n
X e x n e
(10.3.5)
第 10章 上 机实验比较 (10.3.5)和 (10.3.4)可知
^ ( ) ( )j
a TX j X e
(10.3.6)
在数字计算机上观察分析各种序列的频域特性,
通常对 X(ejω)在 [ 0,2π] 上进行 M点采样来观察分析 。 对长度为 N的有限长序列 x(n),有
1
0
( ) ( )
2
,0,1,,1
k
N
jnjk
n
k
X e x m e
k k M
M
一个时域离散线性非移变系统的输入 /输出关系为其中
( ) ( ) ( ) ( ) ( )
m
y n x n h n x m h n m
(10.3.8)
第 10章 上 机实验上述卷积运算也可以在频域实现
3,实验内容及步骤
(1) 认真复习采样理论,离散信号与系统,线性卷积,序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法 。
(2) 编制实验用主程序及相应子程序 。
① 信号产生子程序,用于产生实验中要用到的下列信号序列:
xa(t)=Ae-at sin(Ω0t)u(t)
( ) ( ) ( )j j jY e X e H e (10.3.9)
第 10章 上 机实验进行采样,可得到采样序列
xa(n)=xa(nT)=Ae-anT sin(Ω0nT)u(n),0≤n<50
其中 A为幅度因子,a为衰减因子,Ω0是模拟角频率,T为采样间隔 。 这些参数都要在实验过程中由键盘输入,产生不同的 xa(t)和 xa(n)。
b,单位脉冲序列,xb(n)=δ(n)
c,矩形序列,xc(n)=RN(n),N=10
② 系统单位脉冲响应序列产生子程序 。 本实验要用到两种 FIR系统 。
a,ha(n)=R10(n);
b,hb(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)
第 10章 上 机实验
③ 有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积 。 可以直接调用 MATLAB语言中的卷积函数 conv。 conv用于两个有限长度序列的卷积,
它假定两个序列都从 n=0 开始 。 调用格式如下:
y=conv (x,h)
第 10章 上 机实验图 10.3.1 实验一的主程序框图开始调用信号产生子程序,产生信号序列 x ( n )
调用序列傅氏变换数值计算子程序,求 X ( e )
两次调用绘图子程序,分别绘制 x ( n ),X ( e ) 图形
j ω
改变信号序列否?
调用系统单位脉冲响应序列产生子程序,求 h ( n )
调用傅氏变换数值计算子程序,求 H ( e )
j ω
两次调用绘图子程序,分别绘制 h ( n ),H ( e ) 图形
j ω
改变 h ( n ) 否?
调用卷积子程序,求 y ( n ) = x ( n ) * h ( n )
调用傅氏变换数值计算子程序,求 Y ( e k )
jω
两次调用绘图子程序,分别绘制 y ( n ),Y ( e k ) 图形
jω
结束
Y
Y
N
N
k
k
k
j ω
k
第 10章 上 机实验图 10.3.2 xa(t)的幅频特性曲线
1
0,8
0,6
0,4
0,2
0
0 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0
x
a
(j
f
)
f / H z
第 10章 上 机实验
(3) 调通并运行实验程序,完成下述实验内容:
① 分析采样序列的特性。
a,取采样频率 fs=1 kHz,即 T=1 ms。
b,改变采样频率,fs=300 Hz,观察 |X(ejω)|的变化,
并做记录 (打印曲线 ); 进一步降低采样频率,fs=200
Hz,观察频谱混叠是否明显存在,说明原因,并记录 (打印 )这时的 |X(ejω)|曲线 。
第 10章 上 机实验
② 时域离散信号,系统和系统响应分析 。
a,观察信号 xb(n)和系统 hb(n)的时域和频域特性;
利用线性卷积求信号 xb(n)通过系统 hb(n)的响应 y(n),
比较所求响应 y(n)和 hb(n)的时域及频域特性,注意它们之间有无差别,绘图说明,并用所学理论解释所得结果 。
b,观察系统 ha(n)对信号 xc(n)的响应特性。
③ 卷积定理的验证。
第 10章 上 机实验
4,思考题
(1) 在分析理想采样序列特性的实验中,采样频率不同时,相应理想采样序列的傅里叶变换频谱的数字频率度量是否都相同? 它们所对应的模拟频率是否相同?
为什么?
(2) 在卷积定理验证的实验中,如果选用不同的频域采样点数 M值,例如,选 M=10和 M=20,分别做序列的傅里叶变换,求得
( ) ( ) ( ),0,1,,1k k kj j jaY e X e H e k M
所得结果之间有无差异? 为什么?
第 10章 上 机实验
5,实验报告要求
(1) 简述实验目的及实验原理 。
(2) 按实验步骤附上实验过程中的信号序列,系统单位脉冲响应及系统响应序列的时域和幅频特性曲线,
并对所得结果进行分析和解释 。
(3) 总结实验中的主要结论 。
(4) 简要回答思考题 。
第 10章 上 机实验
10.4 实验二,用 FFT作谱分析
1.实验目的
(1) 进一步加深 DFT算法原理和基本性质的理解 (因为 FFT只是 DFT的一种快速算法,所以 FFT的运算结果必然满足 DFT的基本性质 )。
(2) 熟悉 FFT算法原理和 FFT子程序的应用 。
(3) 学习用 FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用 FFT。
第 10章 上 机实验
2.实验步骤
(1) 复习 DFT的定义,性质和用 DFT作谱分析的有关内容 。
(2) 复习 FFT算法原理与编程思想,并对照 DIT-
FFT运算流图和程序框图,读懂本实验提供的 FFT子程序 。
(3) 编制信号产生子程序,产生以下典型信号供谱分析用:
第 10章 上 机实验
14
2
3
( ) ( )
1,0 3
( ) 8 4 7
0
4 0 3
( ) 3 4 7
0
x n R n
nn
x n n n
nn
x n n n
其它 n
其它 n
4
5
6
( ) c o s
4
( ) si n
8
( ) c o s 8 c o s 1 6 c o s 2 0
x n n
x n n
x n t t t
第 10章 上 机实验
(4) 编写主程序 。
图 10.4.1 给出了主程序框图,供参考 。 本实验提供 FFT子程序和通用绘图子程序 。
(5) 按实验内容要求,上机实验,并写出实验报告 。
第 10章 上 机实验图 10.4.1 主程序框图读入长度 N
开始调用信号产生子程序产生实验信号调用绘图子程序( 函数)
绘制时间序列波形图调用 F F T 子程序( 函数)
计算信号的 D F T
调用绘图 子程序( 函数)
绘制 X ( k ) 曲线结束第 10章 上 机实验
3,上机实验内容
(1) 对 2 中所给出的信号逐个进行谱分析 。 下面给出针对各信号的 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)]
(3) 令 x(n)=x4(n)+jx5(n),重复 (2)。
第 10章 上 机实验
4,思考题
(1) 在 N=8时,x2(n)和 x3(n)的幅频特性会相同吗? 为什么? N=16呢?
(2) 如果周期信号的周期预先不知道,如何用 FFT进行谱分析?
5,实验报告要求
(1) 简述实验原理及目的 。
(2) 结合实验中所得给定典型序列幅频特性曲线,
与理论结果比较,并分析说明误差产生的原因以及用
FFT作谱分析时有关参数的选择方法 。
(3) 总结实验所得主要结论 。
(4) 简要回答思考题 。
第 10章 上 机实验
6,实验用子程序本实验的主程序比较简单,直接根据图 10.4.1 所给框图编写程序即可 。 编程难点是 FFT子程序 。
/* 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中 */
第 10章 上 机实验
void Fft(double xr[ ],double xi[ ],int N,int M)
{
int L,B,J,P,k,i;
double rPartKB,iPartKB;/*分别代表 X(K+B)的实部和虚部 */
double rCf[ 128],iCf[ 128] ;/*rCf存储旋转因子实部,iCf
存储旋转因子虚部 */
/*旋转因子数组长度应根据自己需要调整 */
/*计算旋转因子 */
第 10章 上 机实验
double PI2= 8.0*atan(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);
第 10章 上 机实验
for(J=0;J<=B-1;J++)
{
P = J*((int)(pow(2,(M-L))+0.5));
for(k=J;k<=N-1;k+=(int)(pow(2,L)+0.5))
{
rPartKB = xr[ k+B] *rCf[ P] -xi[ k+B]
*iCf[ P]
iPartKB = xi[ k+B] *rCf[ P] +xr[ k+B]
*iCf[ P]
第 10章 上 机实验
xr[ k+B] = xr[ k] - rPartKB;
xi[ k+B] = xi[ k] - iPartKB;
xr[ k] = xr[ k] + rPartKB;
xi[ k] = xi[ k] + iPartKB;
}
}
}
}
/*倒序子程序 */
第 10章 上 机实验
void ChangeOrder(double xr[ ],double xi[ ],int N)
{
int LH,N1,I,J,K;
double T;
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
第 10章 上 机实验
}
K = LH;
while(J>=K)
{
J=J-K;
K=(int)(K/2+0.5);
}
J=J+K;
}
}
第 10章 上 机实验
10.5 实验三,用双线性变换法设计
IIR数字滤波器
1,实验目的
(1) 熟悉用双线性变换法设计 IIR数字滤波器的原理与方法 。
(2) 掌握数字滤波器的计算机仿真方法 。
(3) 通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
第 10章 上 机实验
2,实验内容
(1) 用双线性变换法设计一个巴特沃斯低通 IIR数字滤波器。
(2) 以 0.02π为采样间隔,打印出数字滤波器在频率区间 [ 0,π/2] 上的幅频响应特性曲线 。
(3) 用所设计的滤波器对实际心电图信号采样序列
(在本实验后面给出 )进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果 。
第 10章 上 机实验
3,实验步骤
(1) 复习有关巴特沃斯模拟滤波器设计和用双线性变换法设计 IIR数字滤波器的内容,按照例 6.4.2,用双线性变换法设计数字滤波器系统函数 H(z)。
例 6.4.2 中已求出满足本实验要求的数字滤波器系统函数:
16
1 2 1 2 1 2
0.0007378 ( 1 )()
( 1 1.268 0.705 ) ( 1 1.0106 0.3583 ) ( 1 0.904 0.215 )
zHz
z z z z z z
3
1
()k
K
Hz
(10.5.1)
第 10章 上 机实验
A=0.090 36
B1=1.2686,C1=-0.7051
B2=1.0106,C2=-0.3583
B3=0.9044,C3=-0.2155
12
12
( 1 2 )( ),1,2,3
1k kk
A z zH z k
B z C z
(10.5.2)
由 (10.5.1)式和 (10.5.2)式可见,滤波器 H(z)由三个二阶滤波器 H1(z),H2(z)和 H3(z)级联组成,如图
10.5.1 所示 。
第 10章 上 机实验图 10.5.1 滤波器 H(z)的组成
x ( n )
H
1
( z ) H
2
( z ) H
3
( z )
y
1
( n ) y
2
( n ) y
3
( n ) = y ( n )
H ( z )
第 10章 上 机实验
(2) 编写滤波器仿真程序,计算 H(z)对心电图信号采样序列 x(n)的响应序列 y(n)。 设 yk(n)为第 k级二阶滤波器 Hk(z)的输出序列,y k-1 (n)为输入序列,如图 10.5.1
所示 。 由 (10.5.2)式可得到差分方程:
yk(n)=Ay k-1 (n)+2Ay k-1 (n-1)+Ay k-1
(n-2)+Bkyk(n-1)+Ckyk(n-2) (10.5.3)
(3) 在通用计算机上运行仿真滤波程序,并调用通用绘图子程序,完成实验内容 (2)和 (3)。
第 10章 上 机实验
4,思考题用双线性变换法设计数字滤波器过程中,变换公式中 T的取值,对设计结果有无影响? 为什么?
5,实验报告要求
(1) 简述实验目的及原理 。
(2) 由所打印的 |H(ejω)|特性曲线及设计过程简述双线性变换法的特点 。
(3) 对比滤波前后的心电图信号波形,说明数字滤波器的滤波过程与滤波作用 。
(4) 简要回答思考题 。
1
1
21
1
zs
Tz
第 10章 上 机实验
6,心电图信号采样序列 x(n)
人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息 。 下面给出一实际心电图信号采样序列样本 x(n),其中存在高频干扰 。 在实验中,以
x(n)作为输入序列,滤除其中的干扰成分 。
第 10章 上 机实验
{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}
第 10章 上 机实验
10.6 实验四,用窗函数法设计
FIR数字滤波器
1,实验目的
(1) 掌握用窗函数法设计 FIR数字滤波器的原理和方法 。
(2) 熟悉线性相位 FIR数字滤波器特性 。
(3) 了解各种窗函数对滤波特性的影响。
第 10章 上 机实验
2,实验原理与方法如果所希望的滤波器的理想频率响应函数为
Hd(e jω),则其对应的单位脉冲响应为
1( ) ( )
2
j j n
ddh n H e e d
(10.6.1)
用窗函数 w(n)将 hd(n)截断,并进行加权处理,得到,
( ) ( ) ( )dh n h n n (10.6.2)
h(n)就作为实际设计的 FIR数字滤波器的单位脉冲响应序列,其频率响应函数 H(e jω)为
1
0
( ) ( )
N
j j n
n
H e h n e
(10.6.3)
第 10章 上 机实验如果要求线性相位特性,则 h(n)还必须满足:
根据上式中的正,负号和长度 N的奇偶性又将线性相位 FIR滤波器分成四类 。 要根据所设计的滤波特性正确选择其中一类 。 例如,要设计线性相位低通特性,可选择 h(n)=h(N-1-n)一类,而不能选 h(n)=-h(N-1-
n)一类 。
( ) ( 1 )h n h N n
第 10章 上 机实验
3,实验内容及步骤
(1) 复习用窗函数法设计 FIR数字滤波器一节内容,
阅读本实验原理,掌握设计步骤 。
(2) 编写程序 。
① 编写能产生矩型窗,升余弦窗,改进升余弦窗和二阶升余弦窗的窗函数子程序 。
② 编写主程序 。 主程序框图如图 10.6.1 所示,仅供参考 。 其中幅度特性要求用 dB表示 。
第 10章 上 机实验图 10.6.1 用窗函数法设计滤波器主程序框图读入窗口长度 N
开始调用窗函数子程序求 w ( n )
调用 子程序( 函数) 计算
H ( k ) = D F T [h ( n )]
调用绘图 子程序( 函数)
绘制 H ( k ) 幅度相位 曲 线结束计算 h
d
( n )
计算 h ( n ) = h
d
( n ) w ( n )
第 10章 上 机实验设
22
( ) [ ( ) ]
( ) ( ) ( )
( ) ( ) ( )
kI
RI
H k D FT h n
H k H k jH k
H k H k H k
第 10章 上 机实验
(3) 上机实验内容。
,
()
0
1
2
11
( ) ( )
22
si n ( )
()
c
c
ja
cj
d
c
j j n j a j n
dd
c
e
He
N
a
h n H e e e e d
na
na
其中第 10章 上 机实验
4.思考题
(1) 如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器? 写出设计步骤 。
(2) 如果要求用窗函数法设计带通滤波器,且给定上,下边带截止频率为 ω1和 ω2,试求理想带通的单位脉冲响应 hd(n)。
第 10章 上 机实验
5.实验报告要求
(1) 简述实验目的及原理 。
(2) 按照实验步骤及要求,比较各种情况下的滤波性能,说明窗口长度 N和窗函数类型对滤波特性的影响 。
(3) 总结用窗函数法设计 FIR滤波器的主要特点 。
(4) 简要回答思考题。