熟悉MATLAB环境快速傅里叶变换FFT及其应用IIR数字滤波器的设计FIR数字滤波器的设计实验报告.docx
《熟悉MATLAB环境快速傅里叶变换FFT及其应用IIR数字滤波器的设计FIR数字滤波器的设计实验报告.docx》由会员分享,可在线阅读,更多相关《熟悉MATLAB环境快速傅里叶变换FFT及其应用IIR数字滤波器的设计FIR数字滤波器的设计实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
熟悉MATLAB环境快速傅里叶变换FFT及其应用IIR数字滤波器的设计FIR数字滤波器的设计实验报告
南京邮电大学
实验报告
实验名称实验一熟悉MATLAB环境
实验二快速傅里叶变换(FFT)及其应用
实验三IIR数字滤波器的设计
实验四FIR数字滤波器的设计
课程名称数字信号处理A
班级学号__________________
姓名_____________________
开课时间2010/2011学年,第2学期
实验一熟悉MATLAB环境
一、实验目的
(1)熟悉MATLAB的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB编程并学会创建函数。
(5)观察离散系统的频率响应。
二、实验内容
注:
每个实验内容包括题目、实验过程与结果(含实验程序、运行的数据结果和图形);
(1)数组的加、减、乘、除和乘方运算。
输入A=[1234],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。
输入代码如下:
A=[1234];
B=[3,4,5,6];
C=A+B;
stem(C)
C运行图片:
输入代码如下:
A=[1234];
B=[3,4,5,6];
D=A-B
stem(D)
D运行图片:
输入代码如下:
A=[1234];
B=[3,4,5,6];
E=A.*B
stem(E)
E运行图片:
输入代码如下:
A=[1234];
B=[3,4,5,6];
F=A./B
stem(F)
F运行图片:
输入代码如下:
A=[1234];
B=[3,4,5,6];
G=A.^B
stem(G)
G运行图片:
(2)用MATLAB实现下列序列:
a)
输入代码如下:
n=0:
1:
15;
x1=0.8.^n
stem(x1)
运行图片:
b)
输入代码如下:
a=(0.2+3*i)*n;
x2=exp(a)
stem(x2)
运行图片:
c)
输入代码如下:
x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)
stem(x3)
运行图片:
d)将c)中的x(n)扩展为以16为周期的函数
,绘出四个周期。
输入代码如下:
x3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi)
x4=[x3x3x3x3];
stem(x4)
运行图片:
(4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注:
a)
输入代码如下:
t1=0:
0.001:
10;
x1=sin(2*pi*t1);
subplot(2,1,1)
plot(t1,x1,'r-')
xlabel('t'),ylabel('x(t)'),title('sin')
b)
输入代码如下:
t2=0:
0.001:
4;
x2=cos(100*pi*t2).*sin(pi*t2);
subplot(2,1,2)
plot(t2,x2)
xlabel('t'),ylabel('x(t)'),title('cossin')
运行图片:
(6)给定一因果系统
,求出并绘制H(z)的幅频响应和相频响应。
输入代码如下:
k=256;
num=[11.4141];
den=[1-0.670.9];
w=0:
pi/k:
pi;
h=freqz(num,den,w);
subplot(2,2,1);
plot(w/pi,abs(h));grid;
title('幅度谱');
xlabel('\omega/\pi');ylabel('幅度')
subplot(2,2,2);
plot(w/pi,angle(h));grid
title('相位谱');
xlabel('\omega/\pi');ylabel('幅度');
运行图片:
(7)计算序列{8-2-123}和序列{23-1-3}的离散卷积,并作图表示卷积结果。
输入代码如下:
x=[8,-2,-1,2,3];
kx=-2;2;
h=[2,3,-1,-3];
kh=-2;1;
y=conv(x,h);
k=kx
(1)+kh
(1):
kx(end)+kh(end);
stem(k,y);
xlabel('n');ylabel('y(n)');
运行图片:
(8)求以下差分方程所描述系统的单位脉冲响应h(n),
输入代码如下:
N=51;
a=[1-2];
b=[10.1-0.06];
x=[1zeros(1,N-1)];
k=0:
1:
N-1;
y=filter(a,b,x);
stem(k,y);
xlabel('n');ylabel('幅度');
运行图片:
实验二快速傅里叶变换(FFT)及其应用
一、实验目的
(1)在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉MATLAB中的有关函数。
(2)应用FFT对典型信号进行频谱分析。
(3)了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT。
(4)应用FFT实现序列的线性卷积和相关。
二、实验内容
实验中用到的信号序列
a) 高斯序列
b) 衰减正弦序列
输入代码如下:
functiongauss(p,q)
n=0:
1:
15;
N=16;
xa=exp(-(n-p).^2/q);
M=10000;
w=2*pi/M*(0:
1:
M-1);
Xa=zeros(1,M);
fork=1:
M
Xa(k)=sum(xa*(exp(-j*w(k)*(0:
N-1)')));
end
subplot(2,1,1);
stem(n,xa);
subplot(2,1,2);
plot(w,abs(Xa))
gauss(8,8)运行图片:
gauss(13,8)运行图片:
c) 三角波序列
输入代码如下:
clear
forn=1:
4
xc(n)=n-1;
end;
forn=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;
%N=32;%%改变fft点数
Xc=fft(xc,N);
k=0:
1:
N-1;
subplot(2,1,2)
plot(k,abs(Xc))
运行图片:
d) 反三角波序列
(1)观察高斯序列的时域和幅频特性,固定信号
中参数p=8,改变q的值,使q分别等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?
记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
(3)观察三角波序列的时域和幅频特性,用N=8点FFT分析信号序列
和
的幅频特性,观察两者的序列形状和频谱曲线有什么异同?
绘出两序列及其幅频特性曲线。
在
末尾补零,用N=32点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?
两种情况的FFT频谱还有相同之处吗?
这些变化说明了什么?
(5)用FFT分别实现
(p=8,q=2)和
(a=0.1,f=0.0625)的16点循环卷积和线性卷积。
7)用FFT分别计算
(p=8,q=2)和
(a=0.1,f=0.0625)的16点循环相关和线性相关。
实验三IIR数字滤波器的设计
一、实验目的
(1)掌握双线性变换法及脉冲响应不变法设计IIR数字滤波器的具体设计方法及其原理,熟悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。
(2)观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。
(3)熟悉巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器的频率特性。
二、实验内容
(1)P162例4.4
设采用周期T=250
(采样频率
=4kHz),用脉冲响应不变法及双线性变换法设计一个三阶巴特沃思低通滤波器,其3dB边界频率为
=1kHz。
输入代码如下:
clc;
clearall;
[B,A]=butter(3,2*pi*1000,'s');
[num1,den1]=impinvar(B,A,4000);
[h1,w]=freqz(num1,den1);
[B,A]=butter(3,2/0.00025,'s');
[num2,den2]=bilinear(B,A,4000);
[h2,w]=freqz(num2,den2);
f=w/pi*2000;
plot(f,abs(h1),'-.',f,abs(h2),'-');
运行图片:
(3)P164例4.6
设计一巴特沃斯带通滤波器,其3dB边界频率分别为
=110kHz和
=90kHz,在阻带
=120kHz处的最小衰减大于10dB,采样频率
=400kHz。
输入代码如下:
clc;
clearall;
w1=2*400000*tan(2*pi*90/(2*400));
w2=2*400000*tan(2*pi*110/(2*400));
wr=2*400000*tan(2*pi*120/(2*400));
[N,wn]=buttord([w1,w2],[1,wr],3,10,'s');
[B,A]=butter(N,wn,'s');
[num,den]=bilinear(B,A,400000);
[h,w]=freqz(num,den);
f=w/pi*200;
plot(f,20*log10(abs(h)));
axis([40,160,-30,10])
运行图片:
(4)P165例4.7设计数字带阻通滤波器
输入代码如下:
clc;
clearall;
w1=2*1000*tan(2*pi*95/(2*1000));
w2=2*1000*tan(2*pi*105/(2*1000));
[B,A]=butter(1,[w1,w2],'stop','s');
[num,den]=bilinear(B,A,1000);
[h,w]=freqz(num,den);
f=w/pi*500;
plot(f,20*log10(abs(h)));
axis([50,150,-30,10]);
运行图片:
实验四FIR数字滤波器的设计
一、实验目的
(1)掌握用窗函数法,频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的计算机编程;
(2)熟悉线性相位FIR滤波器的幅频特性和相频特性;
(3)了解各种不同窗函数对滤波器性能的影响。
二、实验内容
(1)生成一个长度为20的矩形窗,画出其时域和幅频特性曲线。
输入代码如下:
n=0:
1:
19;
N=20;
win(1:
20)=1;
[H,w]=freqz(win,1);
%
subplot(2,1,1);
stem(n,win)
subplot(2,1,2);
plot(w,abs(H));
运行图片:
(2)用窗口法设计一个11阶的线性相位低通FIR数字滤波器,截止频率Wc=0.25π,求出滤波器系数,并绘出滤波器的幅频和相频特性。
分别用矩形窗和汉明窗实现。
修改程序,分别得到阶次为N=61,41的滤波器,并显示其各自的幅频曲线。
输入代码如下:
Wc=0.25*pi;
N=11;
M=(N-1)/2;%位移量
forn=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)
subplot(3,1,2);
plot(w,abs(H));
subplot(3,1,3);
plot(w,angle(H));
运行图片:
数字信号处理实验小结:
数字信号处理是一门介于专业基础和专业之间的课程,所以我们在强调其基础理论知识的同时又要强调其应用背景,所以我们要通过做实验来掌握和提高我们的知识。
通过这几次试验,我熟悉并掌握了如何使用MATLAB语言来进行数字信号的处理和分析,MATLAB仿真可以准确的计算出系数量化对频率响应的影响,在编写程序时我们需要注意:
“%”后的内容是程序的注解,提高了程序的可读性;养成主程序开头用clear指令清除变量的习惯;应当充分利用MATLAB的矩阵运算功能,尽量避免使用“for”等循环控制语句。
程序通过运行,我们可以了解一个函数或序列的幅频响应和相频响应。
由此可以更深入的了解它的特性。