数字信号处理实验报告.docx
- 文档编号:5745122
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:24
- 大小:210.63KB
数字信号处理实验报告.docx
《数字信号处理实验报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
数字信号处理实验报告
实验一信号、系统及系统响应
一、实验目的
1.掌握常用序列。
2.熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解。
3.熟悉时域离散系统的时域特性。
4.利用卷积方法观察分析系统的时域特性。
5.掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。
二、试验内容
1、编写常用信号的程序:
1)单位采样序列δ(n)。
代码:
n=-5:
10;
y=[zeros(1,5),1,zeros(1,10)];
stem(n,y)
axis([-5,10,0,2]);
title('单位取样序列')
结果:
2)单位阶跃序列u(n)
代码:
N=20;
x=ones(1,N);
xn=0:
N-1;
stem(xn,x)
axis([-5,10,0,2]);
title('单位阶跃序列');
结果:
3)单位矩形序列
代码:
n=-5:
10;
y=[zeros(1,5),ones(1,5),zeros(1,6)];
plot(n,y)
stem(n,y)
axis([-5,10,0,2]);
title('单位矩形序列');
结果:
4)正弦序列
代码:
n=-5:
0.5:
10;
y=sin(0.5*pi*n);
stem(n,y)
axis([-5,10,-2,2]);
title('正弦序列');
结果:
5)
。
代码:
t=(-10:
0.5:
10);
y5=exp(-1000*abs(t))
plot(t,y5,'r')
xlabel('t')
ylabel('y5')
title('Xa(t)=e^-1000|t|')
结果:
6)
。
代码:
t1=(0:
0.1:
10);
A=1;c=2;w=2*pi;
y6=A*exp(-c*t1).*sin(w*t1)
plot(t1,y6)
xlabel('t1')
ylabel('y6')
title('Xa(t)=Ae(-at)sin(Ωt)u(t)')
结果:
2、认真复习采样理论、离散信号与系统、线性卷积、序列的傅里叶变换及性质等有关内容,阅读本实验原理与方法。
(1)观察并分析采用不同频率时,对函数
的频谱影响。
(a):
以
,对其进行采样得到
。
代码:
t=[-10:
10];
n=t;
T0=1/5000;%采样频率为5000Hz
x1=exp(-1000*abs(t*T0))
stem(n,x1);
holdon
plot(n,x1,'--')
title('理想采样信号序列fs=5000')
xlabel('n')
ylabel('x1(n)')
gridon
结果:
(b):
以
,对其进行采样得到
。
代码:
T1=1/1000;%采样频率为1000Hz
x2=exp(-1000*abs(t*T1))
stem(n,x2);
title('理想采样信号序列fs=1000')
xlabel('n')
ylabel('x2(n)')
结果:
(c):
对
、
采用理想内插函数重建原始信号
。
代码:
k=-5:
5
W=(pi/2.5)*k
X=x1*exp(-j*pi/2.5)
magX=abs(X)
stem(magX)
title('理想采样信号的幅度谱')
结果:
实验二:
用FFT作谱分析
一、实验目的
1、理解DFS、IDFS的原理和基本性质。
2、进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质),并理解dfs(idfs)与dft(idft)之间的关系。
3、理解掌握循环卷积与线性卷积之间的关系。
4、熟悉FFT算法原理和FFT子程序的应用。
5、学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
二、实验内容
1、复习DFT的定义、性质和用DFT作频谱分析的有关内容。
用matlab函数dfs(dft)和idfs(idft)实现dfs(dft)正反变换。
2、计算周期序列
的DFS.
代码:
N=4;
xn=[4,5,6,7];
xn=[xn,xn,xn];
n=0:
3*N-1;
k=0:
3*N-1;
Xk=xn*exp(-j*2*pi/N).^(n'*k);
%x=(Xk*exp(j*2*pi/N).^(n'*k))/N;
subplot(4,1,1),stem(n,xn);
title('原函数');
axis([-1,3*N,1.1*min(xn),1.1*max(xn)]);
subplot(4,1,2),stem(n,Xk);
title('DFS函数');
axis([-1,3*N,1.1*min(Xk),1.1*max(Xk)]);
subplot(4,1,3),stem(n,abs(Xk));
title('|Xk|');
axis([-1,3*N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);
subplot(4,1,4),stem(angle(Xk));
title('arg|Xk|');
axis([-1,3*n,1.1*min(angle(Xk)),1.1*max(angle(Xk))])
结果:
3、为了说明高密度频谱和高分辨率频谱之间的区别,考察序列x(n)有限个样本的频谱。
当
时,求x(n)的DFT.
当
时,求x(n)的DFT
代码:
n=0:
10;
m=length(n);
x=cos(0.48*pi*n)+cos(0.52*pi*n);
subplot(4,1,1);
stem(n,x);
title('0<=n<=10');
y=fft(x,m);
subplot(4,1,2);
stem(n,abs(y));
title('0<=n<=10x(n)FFT');
k=0:
100;
j=length(k);
z=cos(0.48*pi*k)+cos(0.52*pi*k);
subplot(4,1,3);
stem(k,z);
title('0<=n<=100');
v=fft(z,j);
subplot(4,1,4);
plot(k,abs(v));
title('10<=n<=100x(n)FFT');
结果:
4、利用矩阵相乘计算循环卷积。
设
计算其5点、6点、7点、8点、9点循环卷积。
并分析线性卷积与循环卷积的关系。
实验三:
设计IIR数字滤波器
一、实验目的
1、熟悉IIR数字滤波器的设计方法。
2、掌握模拟滤波器的matlab实现。
3、熟悉用脉冲响应不变法设计IIR数字滤波器的原理与方法。
4、熟悉用双线性变换法设计IIR数字滤波器的原理与方法。
5、掌握数字滤波器的计算机仿真方法。
6、通过观察对实际心电图信号的滤波作用,获得数字滤波的感性知识。
二、实验内容
1、用Matlab语言分别设计巴特奥斯低通滤波器和切比雪夫低通滤波器,
其技术指标为:
通带截止频率
,通带最大衰减
;
阻带起始频率
,阻带最小衰减
;
要求:
求出他们的零点、极点、阶数、增益等,并画出图形作比较。
代码:
fp=5000;Omgp=2*pi*fp;
fs=10000;Omgs=2*pi*fs;
Rp=3;As=30;
[n,Omgc]=buttord(Omgp,Omgs,Rp,As,'s');
[z0,p0,k0]=buttap(n)
b0=k0*real(poly(z0))
a0=real(poly(p0))
freqs(b0,a0);
结果:
2、切比雪夫低通滤波器,其技术指标为:
通带截止频率
,通带最大衰减
;
阻带起始频率
,阻带最小衰减
;
要求:
求出他们的零点、极点、阶数、增益等,并画出图形作比较。
代码:
Wp=0.2*pi;
Rp=1;%最大衰减
Ws=0.3*pi;
As=15;%最小衰减
Ts=0.02*pi;%采样周期
Fs=1/Ts;%采样频率
%利用双线性变换法求解模拟滤波器参数
omegaP=(2/Ts)*tan(Wp/2);
omegaS=(2/Ts)*tan(Ws/2);
[N,omegaC]=buttord(omegaP,omegaS,Rp,As,'s');
[b_LP,a_LP]=butter(N,omegaC,'s')%模拟低通滤波器
[b,a]=bilinear(b_LP,a_LP,Fs);
[H,w]=freqz(b,a);%求解频率特性
dBH=20*log10(abs(H)/max(abs(H)));%以分贝为单位
plot(w/pi,dBH)
axis([0,0.5,-30,5]);
gridon;
title('幅度响应');
xlabel('Frequency(rad)');
ylabel('gain(db)');
sys=tf(b,a,Ts)
结果:
Transferfunction:
0.0007378z^6+0.004427z^5+0.01107z^4+0.01476z^3+0.01107z^2+0.004427z+0.0007378
-----------------------------------------------------------------------------------------------
z^6-3.184z^5+4.622z^4-3.779z^3+1.814z^2-0.48z+0.05445
Samplingtime:
0.062832
3、用脉冲响应不变法把模拟滤波器
转换为数字滤波器H(z),其中采样周期为T=0.1s。
代码:
bs=[1,1]';
as=[1,5,6]';
Ts=0.1;%采样周期
Fs=1/Ts;%采样频率
[b,a]=impinvar(bs,as,Fs)
[H,w]=freqz(b,a);%求频率特性
dBH=20*log10(abs(H)/max(abs(H)));%以分贝为单位
plot(w/pi,dBH);
axis([0,01,-15,5]);
gridon;
title('幅度响应');
xlabel('Frequency(rad)');
ylabel('gain(db)');
sys=tf(b,a,Ts)
结果:
Transferfunction:
0.1z-0.08966
---------------------
z^2-1.56z+0.6065
Samplingtime:
0.1
实验四:
用窗函数法设计FIR数字滤波器
一、实验目的
1、掌握用窗函数法设计FIR数字滤波器的原理和方法。
2、熟悉线性相位FIR数字滤波器特性。
3、了解各种窗函数对滤波特性的影响。
二、实验内容
1、复习用窗函数法设计FIR数字滤波器一节内容,阅读本实验原理,掌握设计步骤。
2、编写程序。
①编写能产生矩型窗、升余弦窗、改进升余弦窗和二阶升余弦窗的窗函数子程序。
代码:
N=64%输入N
n=1:
N
wbo=boxcar(N);%矩形窗
whn=hanning(N);
whm=hamming(N);
wbl=blackman(N);
holdon;
plot(n',wbo)
plot(n',whn,'-.')
plot(n',whm,':
')
plot(n',wbl,'--')
axis([0,N,0,1.1]);
legend('矩形','升余弦窗','改进升余弦窗','二阶升余弦窗');
结果:
3、上机实验内容。
a、用升余弦创设计一线性相位低通FIR数字滤波器,截止频率为
。
窗口长度N=15,33。
要求在两窗口长度情况下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB带宽和20Db带宽。
总结窗口长度N对滤波器的影响。
设计低通FIR数字滤波器时,一般以理想低通滤波特性为逼近函数
,即:
代码1:
Window=hanning(33);
b=fir1(32,pi/4,Window);
freqz(b,1)
结果1:
代码2:
Window=hanning(15);
b=fir1(14,pi/4,Window);
freqz(b,1)
结果2:
b、n=33,
用四种窗函数设计线性相位低通滤波器,绘制出相应的幅频特性曲线,观察3dB和20Db以及阻带最小衰减,比较四种窗函数对滤波器特性的影响。
总结窗口长度N对滤波器的影响。
代码:
N=33;
wc=pi/4;
a=(N-1)/2;
n=0:
(N-1);
m=n-a+eps;
hdn=sin(wc*m)./(pi*m);
wn=boxcar(N);
hn=hdn.*(wn');
[H,w]=freqz(hn,[1],1024,'whole');
dbH=20*log10((abs(H)+eps)/max(abs(H)));
figure
(1);
subplot(1,3,1);
stem(n,hn,'.');
xlabel('n');
ylabel('h(n)');
title('N=33时设计矩形窗h(n)');
subplot(1,3,2);
plot(w,abs(H));
xlabel('w');
ylabel('H(jw)');
title('h(n)的幅度谱');
axis([0,3,0,1.5]);
subplot(1,3,3);
plot(w/pi,dbH);
xlabel('w/pi');
ylabel('dB');
title('损耗特性');
axis([0,1,-110,0]);
N=33;wc=pi/4;
a=(N-1)/2;
n=0:
(N-1);
m=n-a+eps;
hdn=sin(wc*m)./(pi*m);
wn=hanning(N);
hn=hdn.*(wn');
[H,w]=freqz(hn,[1],1024,'whole');
dbH=20*log10((abs(H)+eps)/max(abs(H)));
figure
(2);
subplot(1,3,1);
stem(n,hn,'.');
xlabel('n');
ylabel('h(n)');
title('汉宁窗函数设计h(n)');
subplot(1,3,2);
plot(w,abs(H));
xlabel('w');
ylabel('H(jw)');
title('h(n)的幅度谱');
axis([0,3,0,1.5]);
subplot(1,3,3);
plot(w/pi,dbH);
xlabel('w/pi');
ylabel('dB');
title('损耗特性');
axis([0,1,-110,0]);
N=33;wc=pi/4;
a=(N-1)/2;
n=0:
(N-1);
m=n-a+eps;
hdn=sin(wc*m)./(pi*m);
wn=hamming(N);
hn=hdn.*(wn');
[H,w]=freqz(hn,[1],1024,'whole');
dbH=20*log10((abs(H)+eps)/max(abs(H)));
figure(3);
subplot(1,3,1);
stem(n,hn,'.');
xlabel('n');
ylabel('h(n)');
title('哈明窗函数设计h(n)');
subplot(1,3,2);
plot(w,abs(H));
xlabel('w');
ylabel('H(jw)');
title('h(n)的幅度谱');
axis([0,3,0,1.5]);
subplot(1,3,3);
plot(w/pi,dbH);
xlabel('w/pi');
ylabel('dB');
title('损耗特性');
axis([0,1,60,0]);
N=33;
wc=pi/4;
a=(N-1)/2;
n=0:
(N-1);
m=n-a+eps;
hdn=sin(wc*m)./(pi*m);
wn=blackman(N);
hn=hdn.*(wn');
[H,w]=freqz(hn,[1],1024,'whole');
dbH=20*log10((abs(H)+eps)/max(abs(H)));
figure(4);
subplot(1,3,1);
stem(n,hn,'.');
xlabel('n');
ylabel('h(n)');
title('布莱克曼函数设计h(n)');
subplot(1,3,2);
plot(w,abs(H));
xlabel('w');
ylabel('H(jw)');
title('h(n)的幅度谱');
axis([0,3,0,1.5]);
subplot(1,3,3);
plot(w/pi,dbH);
xlabel('w/pi');
ylabel('dB');
title('损耗特性');
axis([0,1,-100,0]);
结果:
从图中可以看出用各种窗函数设计的FIR滤波器的阻带最小衰减及过渡带均符合课本给出的要求,而且在通带内均为严格线性相位。
总结
通过本次数字信号处理实验,我熟悉了对matlab的使用以及编程,以及对常用序列的程序的编写,做序列的FFT频谱分析,设计IIR数字滤波器,以及用窗函数法设计FIR数字滤波器各种程序的编写都掌握了不少知识。
在程序的编写过程中,也遇到了很多问题,这让我明白了严谨认真的重要性。
最后,我要感谢王老师在平时的学习中对我的耐心指导,以及对我提出的众多问题的细心解答。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 报告