PC机一台 MATLAB软件 3、实验原理
(1)线性卷积:
线性时不变系统(Linear Time-Invariant System, or L. T. I系统)输入、输出间的关系为:当系统输入序列为x(n),系统的单位脉冲响应为h(n),输出序列为y(n),则系统输出为:
y(n)?x(n)?h(n)?m????x(m)h(n?m)
?上式称为线性卷积。 (2)循环卷积
设两个有限长序列x1(n)和x2(n),长度分别为N1和N2,
N点DFTN点DFT???X2(k) x1(n)?????X1(k) x2(n)??如果
X(k)?X1(k)?X2(k)
则x(n)?IDFT[X(k)]?m?0?x(m)x1N?12((n?m))NRN(n)
上式称为x1(n)和x2(n)的循环卷积。
(3)两个有限长序列的线性卷积
序列x1(n)和x2(n),长度分别为L点和P点,x3(n)为这两个序列的线性卷积,则x3(n)为
x3(n)?x1(n)?x2(n)?
且线性卷积x3(n)的非零值长度为L?P?1点。 (4)循环卷积与线性卷积的关系
m????x(m)x1?2(n?m)
序列x1(n)为L点长,序列x2(n)为P点长,若序列x1(n)和x2(n)进行N点的循环卷积xc(n),其结果是否等于该两序列的线性卷积xl(n),完全取决于循环卷积的长度。
由教材相关推导,得xc(n)??q????x(n?qN)RlN(n),也就是说,循环卷积是线性卷积的周期延拓序列再
取主值区间。
当N?L?P?1时循环卷积等于线性卷积,即xc(n)?xl(n);
当N?L?P?1时,两者不等。
4、实验内容
已知长为4的两个有限长序列
x(n)?(n?1)R4(n) h(n)?(4?n)R4(n)
(1)利用MATLAB的conv()函数求线性卷积y(n)?x(n)?h(n),并绘出图形。
(2)利用MATLAB构建的循环卷积函数计算下述4种情况下x(n)和h(n)循环卷积,并绘出图形。
x(n)⑤h(n) x(n)⑥h(n) x(n)⑦h(n) x(n)⑧h(n)
(3)调用fft()函数利用循环卷积定理计算下述4种情况下x(n)和h(n)循环卷积,并绘出图形。
x(n)⑤h(n) x(n)⑥h(n) x(n)⑦h(n) x(n)⑧h(n)
(4)比较线性卷积和循环卷积的结果,总结结论。 5、实验用MATLAB函数介绍
conv(); fft(); ifft(); stem(); figure(); fftfilt() MATLAB构建的循环卷积函数circonv()如下: function y=circonv(x1,x2)
%这里的两个序列x1,x2都是假设从1开始,一直到N; xn2=[x2(1),fliplr(x2)]; xn2(length(xn2))=[];
6
C=xn2; R=x2;
M=toeplitz(C,R); y=x1*(M);
6、思考题
若系统脉冲响应h(n)长为L,系统输入x(n)长为P,且P??L,应使用什么方法进行编程上机计算?
6、实验报告要求
(1)简述实验目的及实验原理。
(2)编程实现各实验内容,列出实验清单及说明。
(3)将实验结果和理论分析结果进行比较,并得出相应结论。 (4)简要回答思考题。
实验五 用FFT作谱分析
1、实验目的
(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的性质)
(2)熟悉FFT算法原理及子程序的应用。
(3)掌握用FFT对连续信号和时域离散信号进行频谱分析的基本方法。了解可能出现的分析误差和原因,以便在实际中正确应用FFT。
2、实验仪器:
PC机一台 MATLAB软件
3、实验原理
如果用FFT对模拟信号进行谱分析,首先要把模拟信号转换成数字信号,转换时要求知道模拟信号的最高截止频率,以便选择满足采样定理的采样频率。一般选择采样频率是模拟信号中最高频率的3~4倍。另外要选择对模拟信号的观测时间,如果采样频率和观测时间确定,则采样点数也确定了。这里观测时间和对模拟信号进行谱分析的分辨率有关,最小的观测时间和分辨率成倒数关系。要求选择的采样点数和观测时间大于它的最小值。
用FFT作谱分析时,要求做FFT的点数服从2的整数幂,这一点在上面选择采样点数时可以考虑满足,即使满足不了,可以通过在序列尾部加0完成。
如果要进行谱分析的模拟信号是周期信号,最好选择观测时间是信号周期的整数倍。如果不知道信号的周期,要尽量选择观测时间长一些,以减少截断效应的影响。
用FFT对模拟信号作谱分析是一种近似的谱分析。首先一般模拟信号(除周期信号外)的频谱是连续频谱,而用FFT作谱分析得到的是数字谱,因此应该取FFT的点数多一些,用它的包络作为模拟信号的近似谱。另外,如果模拟信号不是严格的带限信号,会因为频谱混叠现象引起谱分析的误差,这种情况下可以预先将模拟信号进行预滤,或者尽量将采样频率取高一些。
一般频率混叠发生在折叠频率附近,分析时要注意因频率混叠引起的误差。最后要注意一般模拟信号是无限长的,分析时要截断,截断的长度和分辨率有关,但也要尽量取长一些,取得太短因截断引起的误差会很大。举一个极端的例子,一个周期性正弦波,如果所取观察时间太短,例如取小于一个周期,它的波形和正弦波相差太大,肯定误差很大,但如果取得长一些,即使不是周期的整倍数,这种截断效应也会小一些。
4、实验步骤及内容
(1)复习DFT的定义、性质和用DFT作谱分析的有关内容。 (2)复习FFT算法原理与编程思想。
(3)编制信号产生程序,产生以下典型信号供谱分析用:
7
x1(n)?R4(n)
?n?1,0?n?3?x2(n)??8?n, 4?n?7
?0,其他n??4?n,0?n?3?x3(n)??n?3, 4?n?7
?0,其他n?x4(n)?cos?4n
x5(t)?cos(8?t)?cos(16?t)?cos(20?t)
(4)分别以变换区间N?8,16,32,对x1(n)进行FFT,画出相应的幅频特性曲线。 (5)分别以变换区间N?8,16,对x2(n),x3(n)进行FFT,画出相应的幅频特性曲线。 (6)分别以变换区间N?4,8,16,对x4(n)进行FFT,画出相应的幅频特性曲线。 (7)对模拟信号x5(t)选择采样频率和采样点数。
对x5(t)?cos(8?t)?cos(16?t)?cos(20?t),选择采样频率fs?64Hz,采样点数N分别为16,32,
64。将模拟信号x5(t)转换成序列,用x5(n)表示,再分别对它们进行N点FFT,并画出相应的幅频特性曲线。
也可以参考例程得到另一种曲线结果。
5、实验用MATLAB函数介绍
fft(); figure(); plot(); stem(); abs();title(); xlabel(); ylabel(); text(); hold on; axis(); grid on; subplot(); sin(); cos(); 等。
6、思考题
(1)在N=8时,x2(n)和x3(n)的幅频特性会相同吗? 为什么? N=16呢? (2)如果周期信号的周期预先不知道,如何用FFT进行谱分析?
7、实验报告要求
(1)简述实验目的及实验原理。
(2)编程实现各实验内容,列出实验清单及说明。
(3)将实验结果和理论分析结果进行比较,分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。并总结实验所得的主要结论。 (4)简要回答思考题。
例程参考
用DFT对连续信号作谱分析。已知
xa(t)=cos(200*pi*t)+sin(100*pi*t)+cos(50*pi*t);
选取不同的截取长度Tp,观察用DFT进行频谱分析时存在的截取效应(频谱泄漏和谱间干扰)。在计算机上用DFT对模拟信号进行谱分析时,只能以有限大的采样频率fs对模拟信号采样。对有限点样本序列(等价于截取模拟信号一段进行采样)作DFT变换得到模拟信号的近似频谱
8
clear;close all; fs=400;T=1/fs; Tp=0.04;N=Tp*fs;
N1=[N,4*N,8*N];%三种长度0.04s 4*0.04s 8*0.04s %矩形窗截断 for m=1:3
n=1:N1(m);
xn=cos(200*pi*n*T)+sin(100*pi*n*T)+cos(50*pi*n*T); Xk=fft(xn,4096); fk=fs*[0:4095]/4096; subplot(3,2,2*m-1);
plot(fk,abs(Xk)/max(abs(Xk))); if m==1 title('矩形窗截断'); end end
%加海明窗截断 for m=1:3
n=1:N1(m);
wn=hamming(N1(m));
xn=(cos(200*pi*n*T)+sin(100*pi*n*T)+cos(50*pi*n*T)).*wn'; Xk=fft(xn,4096); fk=fs*[0:4095]/4096; subplot(3,2,2*m)
plot(fk,abs(Xk)/max(abs(Xk))); if m==1 title('hamming窗截断'); end
实验六 IIR滤波器的设计与信号滤波
1、实验目的
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。 (2)掌握数字滤波器的计算机仿真方法。
(3)通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
2、实验仪器:
PC机一台 MATLAB软件 3、实验原理
利用双线性变换设计IIR滤波器(只介绍巴特沃斯数字低通滤波器的设计),首先要设计出满足指标要求的模拟滤波器的传递函数Ha(s),然后由Ha(s)通过双线性变换可得所要设计的IIR滤波器的系统函数
H(z)。
如果给定的指标为数字滤波器的指标,则首先要转换成模拟滤波器的技术指标,这里主要是边界频率
21tan(w)。接着,按照模拟低T2通滤波器的技术指标根据相应设计公式求出滤波器的阶数N和3dB截止频率?c;根据阶数N查巴特沃斯归
s一化低通滤波器参数表,得到归一化传输函数Ha(p);最后,将p?代入Ha(p)去归一,得到实际的
?cwp和ws的转换,对?p和?s指标不作变化。边界频率的转换关系为?? 9
21?z?1模拟滤波器传输函数Ha(s)。之后,通过双线性变换法转换公式s?,得到所要设计的IIR滤波器
T1?z?1的系统函数H(z)。
利用所设计的数字滤波器对实际的心电图采样信号进行数字滤波器。
4、实验步骤及内容
(1)复习有关巴特沃斯模拟滤波器的设计和用双线性变换法设计IIR数字滤波器的内容,用双线性变换法设计一个巴特沃斯IIR低通数字滤波器。设计指标参数为:在通带内频率低于0.2?时,最大衰减小于1dB;在阻带内?0.3?,??频率区间上,最小衰减大于15dB。 (2)绘制出数字滤波器的幅频响应特性曲线。
(3)用所设计的滤波器对实际心电图信号采样序列(实验数据在后面给出)进行仿真滤波处理,并分别绘制出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
(4)输入为20Hz正弦和200Hz的正弦的叠加波形,要求用双线性变换法设计一巴特沃斯数字低通滤波器滤除200Hz的正弦,使输出中只保留20Hz的正弦波。并绘制出滤波前和滤波后的波形。
5、实验用MATLAB函数介绍
buttord(); butter(); bilinear(); freqz(); freqs(); filter(); figure(); plot(); stem(); abs();title(); xlabel(); ylabel(); text(); hold on; axis(); grid on; subplot();等
6、思考题
21?z?1(1)用双线性变换法设计数字滤波器过程中,变换公式s? 中T的取值, 对设计结果有无影响?
T1?z?1为什么?
(2)如果用脉冲响应不变法设计该IIR数字低通滤波器,程序如何改动?
7、实验报告要求
(1)简述实验目的及实验原理。
(2)编程实现各实验内容,列出实验清单及说明。
jw(3)由绘制的H(e)特性曲线及设计过程简述双线性变换法的特点。
(4)对比滤波前后的心电图信号波形,说明数字滤波器的滤波过程与滤波作用。 (5)简要回答思考题。
8、心电图信号采样序列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、实验目的
(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)熟悉线性相位FIR数字滤波器特性。 (3)了解各种窗函数对滤波特性的影响。
2、实验仪器:
PC机一台 MATLAB软件 3、实验原理
10