1、实验三 时域离散信号的产生一、实验目的l 学会运用MATLAB产生常用离散时间信号。l 观察并熟悉这些信号的波形和特性。二、实验原理在时间轴的离散点上取值的信号,称为离散时间信号。通常,离散时间信号用x(n)表示,其幅度可以在某一范围内连续取值。由于信号处理所用的设备主要是计算机或专用的信号处理芯片,均以有限的位数来表示信号的幅度,因此,信号的幅度也必须“量化”,即取离散值。我们把时间和幅度上均取离散值的信号称为时域离散信号或数字信号。在MATLAB中,时域离散信号可以通过编写程序直接生成,也可以通过对连续信号的等间隔抽样获得。下面介绍常用的时域离散信号及其程序。1、单位抽样序列1) 代码:f
2、unction x,n = impuls (n0,n1,n2)% x,n = impuls (n0,n1,n2) ,n=n0 处建立一个单位抽样序列if (n0 n2) | (n1 n2)error(arguments must satisfy n1 = n0 =n0; %生成离散信号x(n)stem(n, x,filled,k); %绘制脉冲杆图,且圆点处用实芯圆表示axis(n1,n2,0,1.1*max(x); 运行结果:title(单位阶跃序列-202040513089,李方美); xlabel(时间(n);ylabel(幅度x(n);(2)代码:n1=-2;n2=8;k=0; n=n
3、1:n2; nt=length(n); %求n点的个数nk=abs(k-n1)+1; %确定k在n序列中的位置x=zeros(1,nk-1),ones(1,nt-nk+1); %对所有样点置0stem(n,x,filled,k);axis(n1,n2,0,1.1*max(x); 运行结果:title(单位阶跃序列-202040513089,李方美);xlabel(时间(n);ylabel(幅度x(n);3、正弦序列x(n)=Um例、已知一时域周期性正弦信号的频率为1HZ,振幅幅度为1V,在窗口中显示两个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号。显示连续信号和采样获得离散信
4、号波形。代码:f=1;Um=1;nt=2; %输入信号频率、振幅和显示周期数N=32; T=1/f; %N为采样点数,T为窗口显示时间 dt=T/N; %采样时间间隔n=0:nt*N-1; %离散信号的时间序列t=n*dt; %时间序列样点在时间轴上的位置x=Um*sin(2*f*pi*t);subplot(2,1,1);plot(t,x); %显示原信号axis(0,nt*T,1.1*min(x) 1.1*max(x);ylabel(x(t);subplot(2,1,2);stem(t,x); %显示经采样的信号axis(0,nt*T,1.1*min(x),1.1*max(x);ylabel
5、(x(n);运行结果:4、矩形序列square(w*t,DUTY),其中DUTY参数表示信号的占空比DUTY%,占空比默认为0.5。w=2pi/T,幅度为-11V。将square表示式中的t换成n,且n取整数,则可以获得矩形序列。例、一个连续周期性矩形信号频率为5kHZ,信号幅度为0-2V之间,脉冲宽度与周期的比例为1:4,且要求在窗口上显示其2个周期的信号波形,并对信号的一个周期进行16点采样来获得离散信号,显示原连续信号与采样获得的离散信号。代码:f=5000;nt=2; N=16;T=1/f; dt=T/N; n=0:nt*N-1;t=n*dt;x=square(2*f*pi*t,25)
6、+1; %产生时域信号,且幅度在02V之间 subplot(2,1,1);stairs(t,x,k); 运行结果:axis(0 nt*T 1.1*min(x) 1.1*max(x);ylabel(x(t);subplot(2,1,2);stem(t,x,filled,k); axis(0 nt*T 1.1*min(x) 1.1*max(x);ylabel(x(n); 注意:直接用square子函数产生的信号波形,其幅度为-11之间。5、rand函数在实际系统的研究和处理中,常常需要产生随机信号,MATLAB提供的rand函数可以为我们生成随机信号。例、生成一组41点构成的连续随机信号和与之相应的随机序列。代码:t=0:40;N=length(t);运行结果:x=rand(1,N);subplot(1,2,1),plot(t,x,k);subplot(1,2,2),stem(t,x,filled,k);title(rand函数-202040513089,李方美)三、实验环境:MATLAB7.0 计算机