南京邮电大学DSP实验报告 下载本文

南京邮电大学

实 验 报 告

实验名称 熟悉MATLAB环境

快速傅里叶变换(FFT)及其应用

IIR数字滤波器的设计 FIR数字滤波器的设计

课程名称 数字信号处理A

班级学号 11002131

姓 名 康登飞

开课时间 2013/2014学年, 第 二 学期

实验一 熟悉MATLAB环境

一、实验目的

(1)熟悉MATLAB得主要操作命令。 (2)学会简单的矩阵输入和数据读写。 (3)掌握简单的绘图命令。

(4)用MATLAB编程并学会创建函数。 (5)观察离散系统的频率响应。

二、实验内容

(1) 数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3,4,5,6],求

C=A+B, D=A-B,E=A.*B,F=A./B,G=A.^B 。并用stem语句画出A、B、C、D、 E、F、G。 解: clear n = 0:1:3; A=[1 2 3 4]; subplot(4,2,1) stem(n,A) xlabel('n') ylabel('A') B=[3,4,5,6]; subplot(4,2,2) stem(n,B) xlabel('n') ylabel('B') C=A+B;

subplot(4,2,3) stem(n,C) xlabel('n') ylabel('C') D=A-B;

subplot(4,2,4) stem(n,D) xlabel('n') ylabel('D') E=A.*B;

subplot(4,2,5) stem(n,E) xlabel('n') ylabel('E') F=A./B;

subplot(4,2,6) stem(n,F) xlabel('n') ylabel('F') G=A.^B; subplot(4,2,7) stem(n,G) xlabel('n') ylabel('G')

(2) 用MATLAB实现下列序列: a) x(n)?0.8 0?n?15 解: n=0:1:15; x1=0.8.^n; stem(n,x1) xlabel('n') ylabel('x(n)') title('2(a)')

n

b) x(n)?e(0.2?3j)n 0?n?15

解: n=0:1:15; i=sqrt(-1); a = 0.2+3*i; x2=exp(a*n); figure

subplot(1,2,1) stem(n,real(x2)) xlabel('n')

ylabel('x(n)实部') subplot(1,2,2) stem(n,imag(x2)) xlabel('n')

ylabel('x(n)虚部')

c) x(n)?3cos(0.125?n?0.2?)?2sin(0.25?n?0.1?) 0?n?15 解: n=0:1:15;

x3=3*cos(0.125*pi*n+0.2*pi) + 2*sin(0.25*pi*n+0.1*pi); stem(n,x3) xlabel('n') ylabel('x(n)')

(4) 绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注: a) x(t)?sin(2?t) 0?t?10s 解:

t=0:0.001:10; x=sin(2*pi*t); plot(t,x,'r-')

xlabel('t'),ylabel('x(t)'),title('sin(2\\pit)')

b) x(t)?cos(100?t)sin(?t) 0?t?4s 解:

t=0:0.001:4;

x=cos(100*pi*t).*sin(pi*t); plot(t,x,'r-')

xlabel('t'),ylabel('x(t)'),title('cos(100\\pi*t).*sin(\\pi*t)')

(6) 给定一因果系统H(z)?(1?2z?1?z?2)/(1?0.67z?1?0.9z?2),求出并绘制H(z)的幅

频响应和相频响应。 解: k=256;

num=[1 1.414 1]; den=[1 -0.67 0.9]; w=0:pi/k:pi;

h=freqz(num,den,w); subplot(2,2,1);

plot(w/pi,real(h));grid title(' 实部')

xlabel('\\omega/\\pi');ylabel('幅度') subplot(2,2,2);

plot(w/pi,imag(h));grid title(' 虚部')

xlabel('\\omega/\\pi');ylabel('幅度') subplot(2,2,3);

plot(w/pi,abs(h));grid title(' 幅度谱')

xlabel('\\omega/\\pi');ylabel('幅度') subplot(2,2,4);

plot(w/pi,angle(h));grid title(' 相位谱')

xlabel('\\omega/\\pi');ylabel('幅度')

(7) 计算序列{8 -2 -1 2 3}和序列{2 3 -1 -3}的离散卷积,并作图表示卷积结果。 解:

x=[8,-2,-1,2,3]; kx=0:4;

h=[2,3,-1,-3]; kh=0:3;

y=conv(x,h);

k=kx(1)+kh(1):kx(end)+kh(end); stem(k,y);

xlabel('n');ylabel('y(n)');

(8) 求以下差分方程所描述系统的单位脉冲响应h(n), 0?n?50

y(n)?0.1y(n?1)?0.06y(n?2)?x(n)?2x(n?1)

解: N=51; a=[1 -2];

b=[1 0.1 -0.06]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y); xlabel('n'); ylabel('幅度');

10.50-0.5幅度-1-1.5-2-2.50510152025n3035404550

;

实验二 快速傅里叶变换(FFT)及其应用

一、实验目的

(1) 在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。 (2) 应用FFT对典型信号进行频谱分析。

(3) 了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。 (4) 应用FFT实现序列的线性卷积和相关。

二、实验内容

实验中用到的信号序列 a) 高斯序列

??(n?p)q?xa(n)??e??020?n?15

其他b) 衰减正弦序列

?e?ansin(2?fn)0?n?15 xb(n)??0其他?c) 三角波序列

0?n?3?n?xc(n)??8?n4?n?7

?0其他?d) 反三角波序列

?4?n0?n?3?xd(n)??n?44?n?7

?0其他?

(1) 观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别

等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

解:

function gauss(p,q) n=0:1:15; N=length(n); xa=exp(-(n-p).^2/q); M=10000;

w=2*pi/M*(0:1:M-1); Xa=zeros(1,M); for k=1:M

Xa(k)=sum(xa*(exp(-j*w(k)*(0:N-1)'))); end

subplot(2,1,1); stem(n,xa);

xlabel('n'),ylabel('x_a(n)') subplot(2,1,2);

plot(w,abs(Xa))

xlabel('\\omega'),ylabel('幅度谱')

>>gauss〔8,2〕

>>gauss(8,4)

>>gauss(8,8)

>>(13,8)

>>(14,8)

当p=13时发生明显泄漏现象,混叠现象也产生。

(3) 观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和

xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性

曲线。

在xc(n)和xd(n)末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?两种情况的FFT频谱还有相同之处吗?这些变化说明了什么? 解: clear; for n=1:4 xc(n)=n-1; end;

for n=5:8; xc(n)=8-(n-1); end;

%xc=[0,1,2,3,4,3,2,1]; n=0:1:7;

subplot(2,1,1) stem(n,xc)

N = 8; ?t点数

%N=32; %%改变fft点数 Xc=fft(xc,N); k=0:1:N-1; subplot(2,1,2) plot(k,abs(Xc))

clear;

for n=1:4 xc(n)=5-n; end;

for n=5:8; xc(n)=n-5; end;

%xc=[0,1,2,3,4,3,2,1]; n=0:1:7;

subplot(2,1,1) stem(n,xc)

N = 8; ?t点数

%N=32; %%改变fft点数 Xc=fft(xc,N); k=0:1:N-1; subplot(2,1,2) plot(k,abs(Xc))

两种情况频谱图一样,三角波序列先增大后减小,反三角波序列先减小后增大。 clear; for n=1:4 xc(n)=n-1; end;

for n=5:8; xc(n)=8-(n-1); end;

%xc=[0,1,2,3,4,3,2,1]; n=0:1:7;

subplot(2,1,1) stem(n,xc)

N = 32; ?t点数

%N=32; %%改变fft点数 Xc=fft(xc,N); k=0:1:N-1; subplot(2,1,2) plot(k,abs(Xc))

clear; for n=1:4 xc(n)=5-n; end;

for n=5:8; xc(n)=n-5; end;

%xc=[0,1,2,3,4,3,2,1]; n=0:1:7;

subplot(2,1,1) stem(n,xc)

N =32; ?t点数

%N=32; %%改变fft点数 Xc=fft(xc,N); k=0:1:N-1; subplot(2,1,2) plot(k,abs(Xc))

反三角波频谱图变密,两种图频谱图没有相似处。

(5) 用FFT分别实现xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环卷积和线性卷积。 解: clear n=0:1:15; p=8; q=2;

xa=exp(-(n-p).^2/q);

a=0.1; f=0.0625;

xb = exp(-a*n).*sin(2*pi*f*n);

N = 16;

Xa=fft(xa,N); Xb=fft(xb,N); Y=Xa.*Xb; y=ifft(Y,N); m=0:1:N-1 stem(m,y) xlabel('m') ylabel('y')

title('循环卷积')

循环卷积21.510.5y0-0.5-105m1015

clear n=0:1:15; p=8; q=2;

xa=exp(-(n-p).^2/q);

a=0.1; f=0.0625;

xb = exp(-a*n).*sin(2*pi*f*n);

N =31;

Xa=fft(xa,N); Xb=fft(xb,N); Y=Xa.*Xb; y=ifft(Y,N); m=0:1:N-1 stem(m,y) xlabel('m') ylabel('y')

title('线性卷积')

线性卷积21.510.5y0-0.5-1051015m202530

实验三 IIR数字滤波器的设计

一、实验目的

(1) 掌握双线性变换法及脉冲响应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。 (2) 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。

(3) 熟悉巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器的频率特性。

二、实验内容 (1)P162 例4.4

设采样周期T=250?s(采样频率fs=4kHz),分别用脉冲响应不变法和双线性变换法设计一个三阶巴特沃思低通滤波器,其3dB边界频率为fc=1kHz。

解

%脉冲响应不变法

fc=1000;

fs=4000;

[B,A]=butter(3, 2*pi*fc,'s'); [num1,den1]=impinvar(B,A,fs); [h1,w]=freqz(num1,den1); f = w/pi*fs/2;

%双线性变换法 fc=1000; fs=4000;

[B,A]=butter(3, 2*fs*tan(pi*fc/fs),'s'); [num2,den2]=bilinear(B,A,fs); [h2,w]=freqz(num2,den2); f = w/pi*fs/2;

plot(f,abs(h1),'-.',f,abs(h2),'-'); grid on

legend('脉冲响应不变法','双线性变换法') xlabel('频率/Hz') ylabel('幅度')

(选做) (2)fc=0.2kHz,?=1dB,fr=0.3kHz,At=25dB,T=1ms;分别用脉冲响应不变法及双线性变换法设计一巴特沃思数字低通滤波器,观察所设计数字滤波器的幅频特性曲线,记录带宽和衰减量,检查是否满足要求。比较这两种方法的优缺点。

每一小题均给出实验过程与结果(含实验程序、运行的数据结果和图形); 解: clear; fc = 200; Rp = 1; fr = 300; Rs = 25; T = 0.001; fs = 1/T;

%脉冲响应不变法 Wp=2*pi*fc; Ws=2*pi*fr;

[N,Wn] = buttord(Wp, Ws, Rp, Rs,'s') [B,A]=butter(N, Wn,'s');

[num1,den1]=impinvar(B,A,fs); [h1,w]=freqz(num1,den1);

%双线性变换法

Wp=2*fs*tan(pi*fc/fs); Ws=2*fs*tan(pi*fr/fs);

[N,Wn] = buttord(Wp, Ws, Rp, Rs,'s') [B,A]=butter(N, Wn,'s');

[num2,den2]=bilinear(B,A,fs); [h2,w]=freqz(num2,den2); f = w/pi*fs/2;

plot(f,abs(h1),'-.',f,abs(h2),'-'); grid on

legend('脉冲响应不变法','双线性变换法') xlabel('频率/Hz') ylabel('幅度')

实验四 FIR数字滤波器的设计

一、实验目的

(1) 掌握用窗函数法,频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的计算机编程;

(2) 熟悉线性相位FIR滤波器的幅频特性和相频特性; (3) 了解各种不同窗函数对滤波器性能的影响。

二、实验内容

(1) 生成一个长度为20的矩形窗,画出其时域和幅频特性曲线。 解: N = 20; n=0:1:N-1; win(1:N)=1;

[H,w]=freqz(win,1); subplot(2,1,1); stem(n,win) subplot(2,1,2); plot(w,abs(H));

(2) 用矩形窗设计一个21阶的线性相位低通FIR数字滤波器,截止频率Wc=0.25π,求

出滤波器系数,并绘出滤波器的幅频特性。修改程序,分别得到阶次为N=41,61的滤波器,并显示其各自的幅频曲线。 解:

%N=21

Wc=0.25*pi; N=21;

M=(N-1)/2; %位移量 for n=0:(N-1)

if (n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else

hd(n+1)=sin(Wc*(n-M)) /(pi*(n-M)); end; end;

win=boxcar(N); %%%不同窗函数 h=hd.*win';

[H,w]=freqz(h,1); n=0:1:N-1; subplot(3,1,1); stem(n,h)

xlabel('n'),ylabel('h(n)') subplot(3,1,2); plot(w,abs(H));

xlabel('\\omega'),ylabel('幅度谱')

subplot(3,1,3); plot(w,angle(H));

xlabel('\\omega'),ylabel('相位谱')

%N=41

Wc=0.25*pi;

N=41;

M=(N-1)/2; %位移量 for n=0:(N-1)

if (n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else

hd(n+1)=sin(Wc*(n-M)) /(pi*(n-M)); end; end;

win=boxcar(N); %%%不同窗函数 h=hd.*win';

[H,w]=freqz(h,1); n=0:1:N-1; subplot(3,1,1); stem(n,h)

xlabel('n'),ylabel('h(n)') subplot(3,1,2); plot(w,abs(H));

xlabel('\\omega'),ylabel('幅度谱')

subplot(3,1,3); plot(w,angle(H));

xlabel('\\omega'),ylabel('相位谱')

%N=61

Wc=0.25*pi; N=61;

M=(N-1)/2; %位移量 for n=0:(N-1)

if (n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else

hd(n+1)=sin(Wc*(n-M)) /(pi*(n-M)); end; end;

win=boxcar(N); %%%不同窗函数 h=hd.*win';

[H,w]=freqz(h,1); n=0:1:N-1; subplot(3,1,1); stem(n,h)

xlabel('n'),ylabel('h(n)') subplot(3,1,2); plot(w,abs(H));

xlabel('\\omega'),ylabel('幅度谱')

subplot(3,1,3); plot(w,angle(H));

xlabel('\\omega'),ylabel('相位谱')

a) 在上面所得的几幅图中,在截止频率两边可以观察到幅频响应的摆动行为。纹的数量与滤波器脉冲响应的长度之间有什么关系?

请问波 波纹的数量随滤波器脉冲响应的长度增大而增大。

b) 最大波纹的高度与滤波器脉冲响应的长度之间有什么关系? 当滤波器脉冲响应长度增大时,最大波纹的高度基本保持不变。

每一小题均给出实验过程与结果(含实验程序、运行的数据结果和图形);

数字信号处理实验小结及心得体会:

通过数字信号处理实验我对matlab软件有了一些了解,并通过老师的指导完成了实验。对傅里叶变换还有滤波器的选择与设计也有了一些基本的认识。通过实验让我对书本上的理论知识更加了解,更加有助于对这门课的学习。