数字信号处理实验报告
专业:信息与计算科学
学号:22
姓名:胡
实验1常见离散信号产生和实现
实验目的:
1、加深对常用离散信号的理解;
2、掌握matlab中一些基本函数的建立方法。
一、作业题目:
生成方波序列:
已知归一化角频率分别为0.05、0.15和0.25的三个正弦序列_1、_2和_3如下所示:_1=sin(0.05pin)u[n];_2=sin(0.15pin)u[n];_3=sin(0.25pin)u[n];这三个正弦序列组合而成的新序列y=_1+(_2)/3+(_3)/5;其这个新序列近似为方波。
二、实验程序:
clf;
n=0:80;u=[ones(1,81)];
_1=sin(pi.n/20).u;_2=sin(3pi.n/20).u;_3=sin(pi.n/4).u;
y=_1+(_2)/3+(_3)/5;
subplot(2,2,1);
stem(n,_1);_label('时间序列n');ylabel('振幅');title('正弦函数序列_1=sin(pi.n/20).u');subplot(2,2,2);
stem(n,_2);_label('时间序列n');ylabel('振幅');title('正弦函数序列_2=sin(3pi.n/20).u');subplot(2,2,3);
stem(n,_3);_label('时间序列n');ylabel('振幅');title('正弦函数序列_3=sin(pi.n/4).u');subplot(2,2,4);
stem(n,_);_label('时间序列n');ylabel('振幅');title('正弦函数序列y=_1+(_2)/3+(_3)/5');
三、执行结果:
振幅振幅时间序列n时间序列n
正弦函数序列_=_1+(_2)/3+(_3)/5
振幅振幅时间序列n时间序列n
实验2离散系统的时域分析
实验目的:加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
一、作业题目:
当n>=0时,求差分方程y[n]-0.3y[n-1]-0.04y[n-2]=_[n]+2_[n-1]的全解。其中,初始条件为y[-1]=3、y[-2]=0,激励函数为_[n]3n[n]。
二、实验程序:
p=[1,2];
d=[1,-0.3,-0.04];
n=1:10;
[y(n),sf]=filter(p,d,3.^n,[0.90.12])%
y1=0.2215(0.4).^n-0.1826(-0.1).^n+1.86103.^n%
三、MATLAB结果:
1.0e+005
Columns1through6
0.00000.00020.00050.00150.00450.0136
Columns7through10
0.04070.12210.36631.09
1.0e+005
1.5253
0.0440
1.0e+005
Columns1through6
0.00010.00020.00050.00150.00450.0136
Columns7through10
0.04070.12210.36631.09
实验3FFT算法的应用数值解解析解
实验目的:加深对离散信号的DFT的理解及其FFT算法的运用。实验原理:N点序列的DFT和IDFT变换定义式如下:
_[k]_[n]W
n0N1knNknN1,_[n]N_[k]W
k0N1利用旋转因子W
一、实验题目:knNej2nkN具有周期性,可以得到快速算法(FFT)。在MATLAB中,可以用函数_=fft(_,N)和_=ifft(_,N)计算N点序列的DFT正、反变换。
对连续的单一频率周期信号按采样频率fs16fa采样,截取长度N分别选N=T和N=2T,观察其DFT结果的幅度谱。分别对其后加相应的零值后观察其DFT的幅度谱。
二、实验程序:
k=16;
n1=[0:1:16];
_a1=cos(2pin1/k);
subplot(4,2,1)stem(n1,_a1)
_label('t/T');ylabel('_(n)');
_k1=fft(_a1);_k1=abs(_k1);
subplot(4,2,2)stem(n1,_k1)
_label('k');ylabel('_(k)');
n2=[0:1:32];
_a2=[_a1,zeros(1,16)];
subplot(4,2,3)stem(n2,_a2)
_label('t/T');ylabel('_(n)');
_k2=fft(_a2);_k2=abs(_k2);
subplot(4,2,4)stem(n2,_k2)
_label('k');ylabel('_(k)');
n3=[0:1:32];
_a3=cos(2pin3/k);
subplot(4,2,5)stem(n3,_a3)
_label('t/T');ylabel('_(n)');
_k3=fft(_a3);_k3=abs(_k3);
subplot(4,2,6)stem(n3,_k3)
_label('k');ylabel('_(k)');
n4=[0:1:];
_a4=[_a3,zeros(1,32)];
subplot(4,2,7)stem(n4,_a4)
_label('t/T');ylabel('_(n)');
_k4=fft(_a4);_k4=abs(_k4);
subplot(4,2,8)stem(n4,_k4)_label('k');ylabel('_(k)');三、实验结果:
_(k)
_(n)
_(k)
_(n)
_(k)
_(n)
_(k)
_(n)
实验4离散系统的变换域分析
实验目的:加深对离散系统的频率响应分析和零、极点分布概念理解。实验原理:离散系统的时域方程为dky(nk)pk_(nk)
其变换域分析方法如下:
频域y[n]_[n]h[n]_[m]h[nm]Y()_()H()
p()p0p1ej...pMejM
系统的频率响应为H()jjN
D()d0d1e...dNe
Z域y[n]_[n]h[n]_[m]h[nm]Y(z)_(z)H(z)
p(z)p0p1z1...pMzM
系统的转移函数为H(z)1N
D(z)d0d1z...dNz
分解因式H(z)
pkzdkz
(1iz)1
(1iz)i1i1N
其中i和i称为零、极点。
在MATLAB中,可以用函数[z,p,K]=tf2zp(num,den)求得有理分式形式的系统转移函数的零、极点,用函数zplane(z,p)绘出零、极点分布图;也可以用函数zplane(num,den)直接绘出有理分式形式的系统转移函数的零、极点分布图。使h=freqz(num,den,w)函数可求系统的频率响应,w是频率的计算点,如w=0:pi/255:pi,h是复数,abs(h)为幅度响应,angle(h)为相位响应。另外,在MATLAB中,可以用函数[r,p,k]=residuez(num,den)完成部分分式展开计算;可以用函数sos=zp2sos(z,p,K)完成将高阶系统分解为2阶系统的串联。
一、实验题目:
编写一个MATLAB程序对一个长度为3的FIR滤波器由一个对称的冲激响应定义,即h[0]=h[2]。假设该滤波器的输入由角频率分别为0.2弧度/样本和0.5弧度/样本的两个余弦序列之和组成,试求使得该滤波器仅通过输入中高频分量的冲激响应的系数设计的滤波器进行仿真并滤波运算。
二、实验程序:
clc,clear
a=[-4.878.5631-4.8788];n=0:49;
_1=cos(0.2.n);_2=cos(0.5.n);
y1=_1+_2;y=filter(a,1,y1)
stem(n,y)holdon
plot(n,y1,'r')
plot(n,y,'k')
plot(n,_1,'y')
plot(n,_2,'g')
三、实验结果:
实验5有限冲激响应数字滤波器设计
实验目的:加深对数字滤波器的常用指标和设计过程的理解。实验原理:低通滤波器的常用指标:
SP1PH()1P,forPH()S,forS
PS通带边缘频率P,阻带边缘频率S,
通带起伏P,
p20log10(1p)[dB]PassbandStopbandTransitionband通带峰值起伏,Fig1Typicalmagnitude
specificationforadigitalLPF
阻带起伏s,最小阻带衰减S20log10(s)[dB]。
数字滤波器有IIR和FIR两种类型,它们的特点和设计方法不同。
一、实验题目:
确定用Parks-McClellan方法设计一个I型线性相位低通FIR滤波器的权函数W(w),来满足一下设计指标:p0.4,s0.55,s0.18,s0.035。设计线性相位FIR
低通滤波器。画出它的幅度响应。
二、实验程序:
Ft=2;Fp=0.4;Fs=0.55;
ds=0.035;dp=0.18;
F=[FpFs];
A=[10];
DEV=[dpds];
[N,Fo,Ao,W]=remezord(F,A,DEV,Ft);
b=remez(N,Fo,Ao,W);
[H,W]=freqz(b,1,512);
figure;
plot(W/pi,20log10(abs(H)));
_label('omega/pi');
ylabel('Gain,dB');
title('N=9');
三、实验结果:
Gain,dB-40
-10000.10.20.30.40.5
/0.60.70.80.91
实验6无限冲激响应数字滤波器设计
实验目的:
掌握双线性变换法及脉冲相应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。
实验原理:
在MATLAB中,可以用下列函数辅助设计IIR数字滤波器:1)利用buttord和cheblord可以确定低通原型巴特沃斯和切比雪夫滤波器的阶数和截止频率;2)[num,den]=butter(N,Wn)(巴特沃斯)和[num,den]=cheby1(N,Wn),[num,den]=cheby2(N,Wn)(切比雪夫1型和2型)可以进行滤波器的设计;3)lp2hp,lp2bp,lp2bs可以完成低通滤波器到高通、带通、带阻滤波器的转换;4)使用bilinear可以对模拟滤波器进行双线性变换,求得数字滤波器的传输函数系数;5)利用impinvar可以完成脉冲响应不变法的模拟滤波器到数字滤波器的转换。
一、实验题目:
用来逼近数_的正弦的一种多项式展开为:
sin(n)3.140625_0.7_5.32519_0._1.800293_(1)式中_以归一化,且其范围被在由0<_<0.5给出的第一象限。用MATLAB求出由式(1)给出的sin(n)的值以及上述逼近的误差。将该近似值与式(1)给出的进行比较。
二、实验程序:
%Program_11_9.m
_=0:0.001:0.5;
y=3.140625_+0._.^2-5.325196_.^3+0._.^4+1.800293_.^5;
_1=pi_;z=sin(_1);
plot(_,y);
_label('Normalizedangle,radians');
ylabel('Amplitude');
title('Appro_imatesinevalues');
grid;
a_is([00.501]);
pause
plot(_,y-z);
_label('Normalizedangle,radians');
ylabel('Amplitude');
title('Errorofappro_imation');grid;
三、实验结果:2345
Appro_imatesinevalues
000.050.10.150.20.250.30.35
Normalizedangle,radians
Errorofappro_imation0.40.450.5Amplitude
4_10
Amplitude1
-200.050.10.150.20.250.30.35
Normalizedangle,radians0.40.450.5
心得体会:
通过做数字信号处理实验,我对于MATLAB加深了自己的认识和应用。从刚开始老师布置的很简单的题目到最后很不好做的题目,感觉的好到了很多东西,学会怎么去思考问题并解决。