logo资料库

数字信号处理实验报告.docx

第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
资料共51页,剩余部分请下载后查看
实验一 时域离散信号的产生 一、实验目的 1、了解常用时域离散信号及其特点; 2、掌握 MATLAB 程序的编程方法; 3、熟悉 MATLAB 函数的调用方法。 二、实验原理 在时间轴上的离散点取值的信号,称为离散时间信号。离散时间信号只在某些离散的 瞬时给出函数值,而在其他时刻无定义。它是时间上不连续按一定先后次序排列的一组数的 集合,称为时间序列,用 x(n)表示,n 取整数代表时间的离散时刻。  ( ) n 在 MATLAB 中用向量来表示一个有限长度的序列。 常用离散信号: 1、单位抽样序列 1 n     0 n    2、单位阶跃序列 1 n     0 n    3、实指数序列 0  0 0  0 ( - u n n 0 n-n )=  (  或  ( ) u n )  或 0     1 n=n    0 n  0 n 0 1 n     0 n    n 0 n 0  ( ) x n n a 4、复指数序列 ( ) x n  ( ) j e   t 5、正(余)弦序列 ( ) x n U  m 6、随机序列 sin( ) n   0 在利用计算机进行系统的研究时,经常需要产生随机信号,MATLAB 提供一个工具 函数 rand 来产生随机信号。 7、周期序列 ( ) x n  ( x n N  ) 三、实验用函数 1、stem 功能:绘制二维图形。 调用格式: 1
stem(n,x);n 为横轴,x 为纵轴的线性图形。 2、length 功能:计算某一变量的长度或采样点数。 调用格式: N=length(t);计算时间向量 t 的个数并赋给变量 N。 3、axis 功能:限定图形坐标的范围。 调用格式: axis([x1,x2,y1,y2]);横坐标从 x1—x2,纵坐标从 y1—y2。 4、zeros 功能:产生一个全 0 序列。 调用格式: x=zeros(1,n);产生 n 个 0 的序列。 5、ones 功能:产生一个全 1 序列。 调用格式: y=ones(1,n);产生 n 个 1 的序列。 四、实验任务 1、调试部分例题程序,掌握 Matlab 基本操作方法。 例 1.1 用 Matlab 产生单位抽样序列。 %先建立函数 impseq(n1,n2,n0) function [x,n]=impseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)==0]; %编写主程序调用该函数 [x,n]=impseq(-2,8,2); stem(n,x) 程序运行结果如图 1-1 所示: 图 1-1 单位抽样序列 2
例 1.2 实数指数序列(运算符“.^”) Matlab 程序如下: n=[0:10]; x=0.9.^n; stem(n,x) 程序运行结果如图 1-2 所示 图 1-2 实数指数序列 例 1.3 复数指数序列( ( ) x n  e ( 0.1   j 0.3) n   ( 10   ) 10) n x=exp(alpha*n); Matlab 程序如下: n=[-10:10]; real_x=real(x); mag_x=abs(x); subplot(2,2,1); subplot(2,2,2); subplot(2,2,3); subplot(2,2,4); 程序运行结果如图 1-3 所示 alpha=-0.1+0.3*j; image_x=imag(x); phase_x=angle(x); stem(n,real_x) stem(n,image_x) stem(n,mag_x) stem(n,phase_x) 3
图 1-3 复数指数序列 sin( ) n   ) 0 例 1.4 正、余弦序列( ( ) x n U  m Matlab 程序如下: n=[0:10]; x=3*cos(0.1*pi*n+pi/3); stem(n,x) 程序运行结果如图 1-4 所示 图 1-4 正、余弦序列 例 1.5 随机序列 rand(1,N)产生其元素在[0,1]之间均匀分布长度为 N 的随机序列 randn(1,N)产生均值为 0,方差为 1,长度为 N 的高斯随机序列 例 1.6 周期序列 如何生成周期序列 1、 将一个周期复制 p 次; 2、借助矩阵运算、matlab 下标能力。先生成一个包含 p 列 x(n)值的矩阵,然后用结构(:) 来把 p 列串接成一个长周期序列。因为这个结构只能用于列向,最后还需要做矩阵转置获得 所需序列。 Matlab 程序如下: x=[1,2,3]; xn=x'*ones(1,3) %一个 x(n) %生成 p 列 x(n) 4
xn=xn(:)' stem(xn) 程序运行的结果如图 1-5 所示 %将 p 列串接成长列序列并转置 图 1-5 周期序列 2、编写程序,完成下列函数波形: 1)利用 zeros 函数生成单位抽样序列; 思路: 利用 zeros 函数和抽样点直接赋值来产生单位抽样序列,假设范围取上-5 到 5 代码: %用zeros函数和抽样点直接赋值来产生单位抽样序列:范围从-5到5 n0=0; %n0表示在该处产生冲激,n0的值可以根据需求变动 n1=-5;n2=5; n=n1:n2; x=zeros(1,length(n));%生成离散信号x(n) x(n0-(n1)+1)=1; %在该处产生冲激 stem(n,x,'filled'); %绘制脉冲杆图,其中’filled’表示散点用实心圆表示 axis([n1,n2,0,1.1*max(x)]); %确定横坐标和纵坐标的取值范围,其中纵坐标 为了美观,处理为处在1.1*所能达到的最大值, title('单位脉冲序'); %表格标题 xlabel('时间(n)'); %横坐标标题 ylabel('幅度x(n)'); %纵坐标标题 5
结果: 2)利用 zeros 函数和 ones 函数生成单位阶跃序列; 思路:利用 zeros 和 ones 函数来产生单位阶跃序列,其中 zeros 负责冲激点前的函数表示, ones 负责冲激点及其后的函数表示 代码: %用zeros和ones函数来产生单位阶跃序列 n0=0; % n0表示在该处产生单位阶跃的转折点,n0的取值可以根据需求变动 n1=-5;n2=5; n=n1:n2; x=[zeros(1,n0-n1),ones(1,n2-n0+1)]; stem(n,x,'filled'); axis([n1,n2,0,1.1*max(x)]) title('单位脉冲序'); xlabel('时间(n)'); ylabel('幅度x(n)'); 结果: 6
实验二 离散序列的基本运算 一、实验目的 1、加强 MATLAB 运用。 2、了解离散时间序列在时域中的基本运算。 3、熟悉相关函数的使用方法,掌握离散序列运算程序的编写方法。 二、实验原理 离散序列的时域运算包括信号的相加、相乘,信号的时域变换包括信号的移位、反折、 倒相及尺度变换等。 在 MATLAB 中,序列的相加和相乘运算是两个向量之间的运算,因此参加运算的两个 序列必须具有相同的长度,否则不能直接进行运算,需要进行相应的处理后再进行运算。 三、实验用函数 1、find 功能:寻找非零元素的索引号。 调用格式: find((n>=min(n1))&(n<=max(n1))):在符号关系运算条件的范围内寻找非零元素的索引 号。 2、fliplr 功能:对矩阵行元素进行左右翻转。 调用格式: x1=fliplr(x):将 x 的行元素进行左右翻转,赋给变量 x1。 四、实验任务 1、理解序列运算的性质,了解函数语句的意义。 (1)信号的时域变换 1)序列移位 function [y,n]=sigshift(x,m,n0) n=m+n0; y=x; 2)序列反折 function [y,n]=sigfold(x,n) y=fliplr(x); n=-fliplr(n); 3)序列倒相 function [y,n]=sig3(x,n) y=-x; 4)序列的尺度变换 function [x,n]=sig4(x,n0) n=4*n0; (2)序列的算术运算 1)序列相加 7
分享到:
收藏