1、数字信号分析实验 桂林工学院电子与计算机科学系目录目录 1前言 信号处理实验简介 2实验一 离散信号的时域运算与变换 4实验二 因果离散线性系统的时域分析 9实验三 DFT变换的性质及应用 13实验四 数字低通巴特沃斯滤波器的设计 18实验五 窗函数设计FIR滤波器 23实验六 基于FFT的图象压缩与放大 26附 录 31附录1 :MATLAB编程及绘图方法 31附录2 :MATLAB矩阵及矩阵的运算 38前言 信号处理实验简介对于一个信号处理系统来说,可以将流程分为三个阶段,首先是定义输入序列,第二是对输入的序列进行运算,第三是保存输出序列,并显示结果。一、实验课程任务与要求1. 实验目的信
2、号处理实验教学是为了将学生的计算机操作能力、分析能力、软件设计能力与应用实践结合起来,引导学生由浅入深地掌握信号处理理论与开发工具,具备实际应用的信号处理软件开发与制作基础。2. 实验基本要求(以软件设计为主要表现形式)(1)上机前应准备好实验的程序设计算法描述与关键分析内容;(2)准备好程序测试数据和设备操作步骤,上机调试、运行;(3)完成每个实验后进行数据与程序对比分析;(4)递交实验结果的可执行程序、源程序并演示实验结果;(5)写出实验报告,二、实验学时安排1实验一:离散信号的时域运算与变换 (2学时)2实验二:因果离散线性系统的时域分析 (2学时)3实验三:DFT变换的性质及应用 (2
3、学时)4实验四:数字低通巴特沃斯滤波器的设计 (2学时)5. 实验五: 窗函数设计FIR滤波器 (2学时)6. 实验六:基于FFT的图象压缩与放大 (2学时) 三、实验报告格式实验报告姓名:_学号:_实验日期:_实验题目:实验目的:实验内容:实验地点:实验结果:(包括列出实验编写的所有文件及各项实验结果的曲线,并加注必要的说明)结果分析:总结:四、实验考核(1)实验预习报告;(2)实验签到;(3)上机实际操作;(4)实验设计报告;五、实验仪器设备要求(1)有快速的较高性能微机和较大内存与硬盘的设备;(2)设备数量能适应学生人数;(3)有Matlab程序设计环境;六、教材及参考书1张志勇等. 精
4、通MATLAB6.5. 北京航空航天大学出版社. 2003年3月2. 邹鲲等.MATLAB6.x信号处理. 清华大学出版社. 2002年5月3陈怀琛等. MATLAB及在电子信息课程中的应用.电子工业出版社. 20024程佩清.数字信号处理教程 M.清华大学出版社.2003实验一 离散信号的时域运算与变换 1. 熟悉MATLAB编程特点 2. 了解离散序列的延迟、相加、相乘及平移、反折、及倒相变换 1.设计一个实现序列移位的函数 将序列x(n)1,2,3,4,0,7,其中n0:5的每一个样本都移动3个周期,移位后的序列y(n)=x(n-3)2.序列的奇偶分解将序列x(n)0,1,2,3,4,3
5、,2,1,0,其中n-3:5进行奇偶分解用函数stem显示其奇偶序列3.序列的加法运算 设x1(n)1,0.5,0.3,0.4其中n=-1:2 ;x2(n)0.2,0.3,0.4,0.5,0.8,1其中n=-2:3 4.实现2中序列的翻转1.列出本次实验编写的所有文件及各项实验结果的曲线,加注必要的说明2.对本实验结果做理论计算,解释实验结果3.总结实验体会及实验中存在的问题1. 在matlab中应如何实现序列的相乘运算2. 在matlab中应如何实现序列的倒相运算?首先,在用MATLAB表示离散序列并将其可视化时,我们还应注意以下几点:第一、离散时间序列无法用符号运算来表示,要用矩阵的形式;
6、第二、由于在MATLAB 中矩阵的元素个数有限,因此,MATLAB无法表示无限长的序列;第三、在绘制离散信号波形的函数stem命令,而不是plot命令。下面是MATLAB绘制单位抽样序列及其移位序列的函数,n0是单位抽样序列的位移量,n1,n2是序列的起止时刻, ,调用该函数就可以绘出单位抽样序列及其移位序列的波形图。function x,n = impuls (n0,n1,n2)% Generates x(n) = delta(n-n0); n=n0 处建立一个单位抽样序列% x,n = impuls (n0,n1,n2)if (n0 n2) | (n1 n2) error(argument
7、s must satisfy n1 = n0 n0=1,n1=-20,n2=30;x,n=impuls (n0,n1,n2);figure(1),stem(n,x)上图为右移了一个单位的单位抽样序列其次,对于离散序列来说,序列相加、相乘是将两序列对应时间序号的值逐项相加或相乘,平移、反折、及倒相变换与连续信号的定义完全相同,但需要注意,与连续信号不同的是,在MATLAB中,离散序列的时域运算和变换不能用符号运算来实现,必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量必须具有相同的维数。 在MATLAB中,用一个向量即可表示一个有
8、限长度的序列。但是,这样的向量并没有包含对应的时间序号的信息。所以,要完整地表示离散信号要用两个向量 如: 序列: f(k)=1,2,-1,3,4,5 k=0 在MATLAB中应表示为: f=1,2,-1,3,4,5 k=-3,-2,-1,0,1,2或是k-3:2 ZEROS 功能:产生全零阵列 调用格式:X=ZEROS (N) %产生N行N列的全零矩阵 X=ZEROS(M,N) %产生M行N列的全零矩阵 ONES 功能:产生全1阵列 调用格式:X=ONES(N) %产生N行N列的全1矩阵 X=ONES(M,N) %产生M行N列的全1矩阵 SINC 功能:辛格函数 调用格式:Y= SINC(X
9、) % RECTPULS 功能:产生矩形脉冲信号 调用格式:Y= RECTPULS (T) %产生高度为1、宽度为1、关于T0对称的矩形脉冲 Y= RECTPULS (T,W) %产生高度为1、宽度为W、关于T0对称的矩形脉冲 RAND 功能:产生伪随机序列 调用格式:Y= RAND (1,N) %产生0,1上均匀分布的随机序列 Y= RANDN (1,N) %产生均值为0,方差为1的白噪声序列 SAWTOOTH 功能:产生周期锯齿波或三角波 调用格式:Y= SAWTOOTH (T) %产生幅值为1,1,以2为周期的方波 Y=SAWTOOTH(T,WIDTH)% 产生幅值为1,1,以WIDTH
10、 *2为周期的方波 SQUARE 功能:产生方波 调用格式:Y= SQUARE (T) %产生幅值为1,1,以2为周期的锯齿波 Y= SQUARE(T,DUTY) % 产生幅值为1,1,以占空比为DUTY的方波 例: t = 0:.0001:.0625; y = SQUARE(2*pi*30*t,80); plot(t,y)产生一个占空比为80%的方波 FLIPLR 功能: 序列左右翻转 调用格式:Y = FLIPLR(X) % X = 1 2 3 翻转后 3 2 1 4 5 6 6 5 4 CUMSUM 、SUM 功能: 计算序列累加 调用格式:Y = CUMSUM(X) % 向量X元素累加
11、,记录每一次的累加结果,而SUM只记录最后的结果 (1)实现序列移位的函数 function y,n = segshift(x,n,n0) % 功能 y(n) = x(n-n0) % y,n = segshift(x,n,n0) n = n+n0; y = x;(2)实现两序列相加 function y,n = sigadd(x1,n1,x2,n2) % 实现 y(n) = x1(n)+x2(n) % - % y,n = sigadd(x1,n1,x2,n2) % y = 在包含n1 和 n2 的n点上求序列和, % x1 = 在 n1上的第一序列 % x2 = 在 n2上的第二序列(n2可与
12、 n1不等) n = min(min(n1),min(n2):max(max(n1),max(n2); % y(n)的长度 y1 = zeros(1,length(n); y2 = y1; % 初始化 y1(find(n=min(n1)&(n=min(n2)&(n=max(n2)=1)=x2; % 具有y的长度的x2 y = y1+y2; % 序列相加.(3)实现序列奇偶分解 m = -fliplr(n); m1 = min(m,n); m2 = max(m,n); m = m1:m2; x1 = zeros(1,(length(m)-length(n),x; xe = 0.5*(x1 + f
13、liplr(x1) xo = 0.5*(x1 - fliplr(x1) subplot(1,2,1),stem(m,xe),ylabel(xe), subplot(1,2,2),stem(m,xo),ylabel(xo), 奇偶分解结果入下图所示: (4)正弦序列翻转n=-1:10;x=sin(0.4*pi*n);y=fliplr(x);n1=-fliplr(n);subplot(2,1,1),stem(n,x)subplot(2,1,2),stem(n1,y)效果如右图所示:实验二 因果离散线性系统的时域分析实现由差分方程构成的数字滤波器: 1.用两种不同的程序计算数字滤波器的单位抽样响应,给定差分方程:y(n)-y(n-1)+0.9y(n-2)=x(n)a.编制文件himpz.m,实现数字滤波器的单位抽样响应b. 编制函数文件hfilter.m,实现数字滤波器的单位抽样响应2.给定计算此数字滤波器的单位阶跃响应,并判断系统的稳定性。用stem(n,y)画出相应的图形。参考程序gfilter.m1.列出本次实验编写的所有文件及各项实验结果的曲线,加注必要的