数字信号实验全Word下载.docx
《数字信号实验全Word下载.docx》由会员分享,可在线阅读,更多相关《数字信号实验全Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
![数字信号实验全Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/31/56623388-1c4d-429e-b03d-e3a438c324ee/56623388-1c4d-429e-b03d-e3a438c324ee1.gif)
4.实验内容与方法15
5.实验小结16
实验六:
FIR数字滤波器的设计17
1.实验目的17
2.实验原理17
3.主要实验仪器及材料17
4.实验内容与方法17
4.实验小结21
(2学时)
1.实验目的
掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。
2.实验原理
参考《数字信号处理》教材的第一章和第二章。
3.主要实验仪器及材料
微型计算机、Matlab教学版。
4.掌握要点
掌握用Matlab软件或C语言设计流程,重点是画出两个序列运算前后的图形。
5.实验内容
(1)用Matlab或C语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序;
已知两序列x1={3,12,4,8,-1}(0≤n≤4),x2={-4,7,21,16,2}(0≤n≤4)
相加:
>
x1=[3,12,4,8,-1]
x1=31248-1
x2=[-4,7,21,16,2]
x2=-4721162
x=x1+x2
x=-1192524
相乘:
y=x1.*x2
y=-128484128-2
n=[0:
4];
stem(n,y,'
r'
)
gridon
反褶:
y=x1.*x2
y=-128484128-2
n=-1*n
n=0-1-2-3-4
sublot(2,1,1)
卷积:
n1=0:
4;
n2=0:
nb=n1
(1)+n2
(1)
nb=0
ne=n1(end)+n2(end)
ne=8
n=nb:
ne
n=012345678
x=conv(x1,x2)
x=-12-271312963422491150-2
stem(n,x,'
b'
);
gridon
(2)画出画出两个序列运算以后的图形;
(1)掌握matlab对序列相加,相乘,反褶,卷积。
掌握分析离散时间信号与系统的时域分析方法;
掌握运用MATLAB求离散时间信号的z变换和z反变换;
掌握运用MATLAB分析离散时间系统的系统函数的零极点;
掌握运用MATLAB分析离散时间系统的频率特性分析。
参考《数字信号处理》教材的第三章。
4.实验内容
参照课本第三章。
(1)确定H(z)=
的零极点,确定稳定性
b=[2,-5,13.48,-7.78,9];
a=[4,7.2,20,-0.8,8];
[z,p,k]=tf2zp(b,a);
disp('
Zeros'
disp(z'
Zeros
1.0500-1.9742i1.0500+1.9742i0.2000-0.9274i0.2000+0.9274i
Poles'
disp(p'
Poles
-1.0000-2.0000i-1.0000+2.0000i0.1000-0.6245i0.1000+0.6245i
Constants'
disp(k'
Constants
0.5000
zplane(b,a);
title('
Pole-ZeroPlot'
legend('
零点'
'
极点'
(2)计算
的反变换
b=[0,3];
a=[1,0.3,-0.18];
[R,p,C]=residuez(b,a)
R=
-3.3333
3.3333
p=
-0.6000
0.3000
C=
[]
[b,a]=residuez(R,p,C)
b=
03
a=
1.00000.3000-0.1800
Z反变化结果;
x(n)=-
5.实验小结
(1)学会分析系统函数的零极点分布,并判断系统稳定性。
(2)学会用matlab求z变换和反变化。
在理论学习的基础上,通过本实验的练习,了解离散时间信号时域运算的基本实现方法;
了解相关函数的调用格式及作用;
通过本实验,掌握离散傅里叶变换的原理及编程思想。
(参考《数字信号处理》教材的第四章和第五章)。
对于离散序列,存在着两种傅里叶变换——离散时间傅里叶变换(DTFT)和离散傅里叶变换(DFT)。
DTFT用以求出离散信号的连续频谱,它仅在时域上离散而在频域上是连续的;
DFT用以求出连续频谱上的离散样本点,所以其在时域和频域上都是离散的。
对于一个离散序列
,它的离散时间傅里叶变换(DTFT)的定义为
离散时间傅里叶变换收敛的条件是
绝对可和,即
利用离散快速傅里叶变换函数计算傅里叶变换。
MATLAB提供了内部函数来快速地进行离散傅里叶变换(DFT)和逆变换(IDFT)的计算。
1)离散时间傅里叶变换DTFT
求有限长序列
=[1,2,3,4,5]的DTFT,画出它的幅值谱、相位谱、实部和虚部。
(按要求完成此题,要有完整的程序和图形)
x=[12345];
xn=-1:
3;
w=linspace(0,2*pi,512);
H=x*exp(-1*j*xn'
*w);
subplot(2,2,1);
plot(w,abs(H));
幅值'
subplot(2,2,2);
plot(w,angle(H));
相位'
subplot(2,2,3);
plot(w,real(H));
实部'
subplot(2,2,4);
plot(w,imag(H));
虚部'
2)离散傅里叶变换DFT
对于离散序列
,求出它的20点和23点的离散傅里叶变换的幅值谱。
xn1=0:
19;
xn2=0:
22;
x1=cos(2*pi*xn1/5);
subplot(1,2,1);
plot(w,abs(h));
20点的幅值谱'
x2=cos(2*pi*xn2/5);
h=x2*exp(-1*j*xn2'
subplot(1,2,2);
23点的幅值谱'
3)离散傅里叶变换DFT的性质
(1)时移性质
将序列
=[2,1,-1,8,6,-2,-4,9,-3]右移10位,观察它的幅值谱和相位谱的变化。
x=[21-186-2-49-3];
xn=-2:
6;
xn1=xn+10;
H=x*exp(-1*j*xn1'
移位后的幅值'
移位后的相位'
(2)频移特性
将序列
=[2,1,-1,8,6,-2,-4,9,-3]的频谱向右移9位,观察他的频移序列的幅值谱和相位谱。
(实验报告要求同实验一)
w1=w-9;
*w1);
频移后的幅值'
频移后的相位'
5.实验小结
(1)学会用matlab分析离散时间傅里叶变换DTFT,离散傅里叶变换DFT,离散傅里叶变换DFT的性质
(2)用matlab对以上变化的的时移特性以及频移特性进行观察。
1.目的要求
加深理解FFT在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT进行数字信号处理。
掌握循环卷积和线性卷积两者之间的关系。
2.方法原理
参考《数字信号处理》教材的快速傅立叶变换一章(第五章)。
结合实验中画出的序列特性曲线,分析所得的图形,说明用FFT实现快速卷积时有关参数的选择方法。
(1)用Matlab编制信号产生子程序,产生典型信号供谱分析用;
x1n=[1,2,3,4];
x2n=[2,4,6,8,12,7,0];
(2)画对给出信号逐个进行谱分析,绘出序列和幅频特性曲线;
%m5
N1=4;
y1=fft(x1n,N1);
subplot(2,2,1);
n1=0:
N1-1;
stem(n1,x1n,'
fill'
原始序列'
xlabel('
横坐标n'
ylabel('
x1(n)'
subplot(2,2,2);
stem(n1,abs(y1));
FFT变化'
横坐标'
N2=8;
y2=fft(x2n,N2);
subplot(2,2,3);
n2=0:
N2-1;
stem(n2,x2n,'
x2(n)'
subplot(2,2,4);
stem(n2,abs(y2));
横坐标k'
(3)设计利用快速傅里叶变换FFT计算线性卷积的程序;
N1=4;
N2=7;
N=N1+N2-1;
y=zeros(1,N);
forn=0:
N-1;
y(n+1)=0;
form=0:
N-1
n1=mod((n-m),N);
y(n+1)=y(n+1)+x1(m+1).*x2(n1+1);
end
end
y
y=
139141818141063
6.实验小结
(1)掌握FFT计算线性卷积的方法‘
(2)学会用matlab实现圆周卷积。
数字滤波器结构设计分析
(1)掌握如何利用数字滤波器系统函数模拟实际系统的分析方法。
(2)掌握如何借助MATLAB仿真工具对数字滤波器基本结构实现仿真分析。
数字滤波器是离散时间系统,一般由差分方程、单位脉冲响应以及系统函数等来描述,根据数字滤波器的系统函数就可以利用加法器、乘法器、延迟器等基本单元来实现,这些基本单元的联结关系及运算结构由方框图或信号流图表示。
当一个离散系统给定输入输出关系后,就可以用多种不同的运算结构来实现。
在不考虑量化影响时,这些不同的实现方法是等效的;
但在考虑量化影响时,这些不同的实现方法在性能上存在差异。
同一系统函数,运算结构不同,将会影响系统的精度、稳定性、经济性以及运算速度等许多重要性能。
因此,实现离散时间系统的运算结构十分重要。
本次实验讨论IIR型和FIR型数字滤波器的基本结构,并借助MATLAB仿真工具对数字滤波器基本结构实现了建模和仿真分析。
4.实验内容与方法
实验内容以第六章课后给出的例题和练习为主。
用级联形式实现滤波器;
对于H(z)=
num=[1,-0.5];
den=[1,0.75,0.125];
此为M文件:
functiony=casfilt(sos,x)
A=sos(:
4:
6);
B=sos(:
1:
3);
[K,L]=size(B);
N=length(x);
w=zeros(K+1,N);
w(1,:
)=x;
fori=1:
1:
K
w(i+1,:
)=filter(B(i,:
),A(i,:
),w(i,:
));
y=w(K+1,:
[z,p,k]=tf2zp(num,den);
sos=zp2sos(z,p,k);
[b,a]=sos2tf(sos);
对于输入x(n)={1,2,4,6}
x=[1,2,4,6];
y=casfilt(sos,x)
01.00000.75002.3125
用直接二型实现滤波器
b=[1,-0.5];
a=[1,-0.75,-0.125];
[z,p,k]=tf2zp(b,a);
formatlong;
delta=impseq(0,0,7);
hcas=casfilt(sos,delta)
hcas=
Columns1through4
02.000000000000000-2.600000000000001-1.119999999999997
Columns5through8
4.5559999999999992.247199999999994-2.217359999999997-1.677631999999992
(1)理解了如何利用数字滤波器系统函数模拟实际系统的分析方法;
(2)掌握了如何借助MATLAB仿真工具对数字滤波器基本结构实现仿真分析。
FIR数字滤波器的设计
加深理解FIR数字滤波器的时域特性和频率特性,掌握FIR数字滤波器的设计原理与设计方法,以及FIR数字滤波器的应用。
FIR数字滤波器总是稳定的系统,且可以设计成具有线性相位的。
其在数据通信、图像处理、语音信号处理等实际应用领域中得到广泛的应用。
N阶有限冲激响应(FIR)数字滤波器的转移函数为:
,系统的单位脉冲相应
是长度为N的有限长因果序列。
当满足
的对称条件时,该FIR数字滤波器具有线性相位。
FIR数字滤波器的设计方法主要有窗函数法和频率采样法。
FIR滤波器的冲激响应就是系统函数各次项的系数,所以设计FIR滤波器的方法之一就是:
从时域出发,截取有限长的一段冲激响应作为
系数,冲激响应长度N就是系统函数
的阶数。
只要N足够长,并且截取的方法合理,总能够满足频域的要求,这就是FIR滤波器的窗函数设计法。
实验内容以第七章课后给出的例题和练习为主。
用四种窗函数实现低通滤波器的设计。
closeall
N=45;
wp=0.3*pi;
ws=0.5*pi;
w=0.5*(wp+ws);
n=0:
(N-1);
alpha=(N-1)/2;
m=n-alpha+eps;
hd=sin(w*m)./(pi*m);
k=input('
请选择窗函数类型(1=矩形;
2=汉明;
3=汉宁;
4=不莱克曼):
'
switchk
case1
B=boxcar(N);
string=['
Boxcar,N='
num2str(N)];
case2
B=hamming(N);
Hamming,N='
case3
B=hanning(N);
Hanning,N='
case4
B=blackman(N)
Blackman,N='
h=hd.*(B)'
;
[H,m]=freqz(h,[1],1024,'
whole'
db=20*log10(abs(H)+eps);
pha=angle(H);
i=0;
i=i+1;
figure(i);
subplot(2,2,1);
stem(n,h,'
.r'
axis([0,N-1,-0.1,0.3]);
n'
h(n)'
实际低通滤波器的h(n)'
text((0.3*N),0.275,string);
subplot(2,2,2);
plot(m/pi,db,'
m'
axis([0,1,-100,0]);
w/pi'
dB'
衰减特性(dB)'
grid;
subplot(2,2,3);
plot(m,pha);
holdon;
plot(0:
4,zeros(5),'
-k'
相频特性'
频率(rad)'
相位(rad)'
axis([0,3.15,-4,4]);
subplot(2,2,4);
plot(m,abs(H));
频率特性'
频率W(rad)'
axis([0,3.15,0,1.5]);
text(0.9,1.3,string);
1
选择矩形窗时:
选择汉明窗:
选择汉宁窗:
选择布莱克曼窗:
4.实验小结
(1)对FIR滤波器的设计实现认识更深刻。
(2)熟悉FIR滤波器的设计思路。