实验二 信号的表示及其基本运算一、实验目的1、掌握连续信号及其MATLAB 实现方法;2、掌握离散信号及其MA TLAB 实现方法3、掌握离散信号的基本运算方法,以及MA TLAB 实现4 熟悉应用MATLAB 实现求解系统响应的方法4、了解离散傅里叶变换的MA TLAB 实现5、了解IIR 数字滤波器设计6、了解FIR 数字滤波器设计1二、实验设备计算机,Matlab 软件三、实验内容(一)、 连续信号及其MATLAB 实现1、 单位冲激信号()0,0()1,0t t t dt εεδδε-⎧=≠⎪⎨=∀>⎪⎩⎰ 例1.1:单位冲击信号的MATLAB 实现程序如下:t1=-4;t2=4;t0=0;dt=0.01;t=t1:dt:t2;n=length(t);x=zeros(1,n); x(1,(-t0-t1)/dt+1)=1/dt;stairs(t,x);axis([t1,t2,0,1.2/dt]);2、 任意函数()()()f t f t d τδττ+∞-∞=-⎰例1.2:用MA TLAB 画出如下表达式的脉冲序列()0.4(2)0.8(1) 1.2() 1.5(1) 1.0(2)0.7(3)f n n n n n n n δδδδδδ=-+-+++++++ 3 单位阶跃函数1,0()0,0t u t t ⎧≥⎪=⎨<⎪⎩例1.3:用MA TLAB 实现单位阶跃函数clear all;t=-0.5:0.001:1;t0=0;u=stepfun(t,t0);plot(t,u)axis([-0.5 1 -0.2 1.2])4 斜坡函数0()()g t B t t =-例1.4:用MA TLAB 实现g(t)=3(t-1)clear all;t=0:0.01:3;B=3;t0=1;u=stepfun(t,t0);n=length(t);for i=1:nu(i)=B*u(i)*(t(i)-t0);endplot(t,u)axis([-0.2 3.1 -0.2 6.2])5 抽样信号 抽样信号Sa(t)=sin(t)/t 在MATLAB 中用 sinc 函数表示。
定义为 )/(sin )(πt c t Sa =t=-3*pi:pi/100:3*pi;ft=sinc(t/pi);plot(t,ft);grid on;axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴title('抽样信号') %定义图的标题名字6 指数函数()at f t Ae =例1.5:用MA TLAB 实现0.5()3t f t e=7 正弦函数 02()cos()t f t A T πϕ=+ 例1.6:用MA TLAB 实现正弦函数f(t)=3cos(10πt+1)8 虚指数信号例 虚指数信号 调用格式是f=exp((j*w)*t)t=0:0.01:15;w=pi/4;X=exp(j*w*t);Xr=real(X); %取实部Xi=imag(X); %取虚部Xa=abs(X); %取模Xn=angle(X); %取相位subplot(2,2,1),plot(t,Xr),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]),title('实部');subplot(2,2,3),plot(t,Xi),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]),title('虚部');subplot(2,2,2), plot(t,Xa),axis([0,15,0,max(Xa)+1]),title('模');subplot(2,2,4),plot(t,Xn),axis([0,15,-(max(Xn)+1),max(Xn)+1]),title('相角');%subplot(m,n,i) 命令是建立m 行n 列画图窗口,并指定画图位置i9 复指数信号例 复指数信号 调用格式是f=exp((a+j*b)*t)t=0:0.01:3;a=-1;b=10;f=exp((a+j*b)*t);subplot(2,2,1),plot(t,real(f)),title('实部')subplot(2,2,3),plot(t,imag(f)),title('虚部')subplot(2,2,2),plot(t,abs(f)),title('模')subplot(2,2,4),plot(t,angle(f)),title('相角')(二)、离散信号及其MATLAB 实现1、 单位冲激序列1,0()0,0n n n δ⎧=⎪=⎨≠⎪⎩例2.1:用MA TLAB 产生64点的单位冲激序列clear all;N=64;x=zeros(1,N);x(1)=1;xn=0:N-1;stem(xn,x)axis([-1 65 0 1.1])2、 任意序列()()()m f n f m n m δ∞=-∞=-∑例2.2:用MA TLAB 画出如下表达式的脉冲序列()8.0() 3.4(1) 1.8() 5.6(3) 2.9(4)0.7(5)f n n n n n n n δδδδδδ=+-++-+-+-3、 单位阶跃序列1,0()0,0n u n n ⎧≥⎪=⎨<⎪⎩例2.3:用MA TLAB 实现单位阶跃函数4、 斜坡序列0()()g n B n n =-例2.4:用MA TLAB 实现g(n)=3(n-4)点数为32的斜坡序列clear all;N=32;k=4B=3;t0=1;x=[zeros(1,k) ones(1,N-k)];for i=1:Nx(i)=B*x(i)*(i-k);endxn=0:N-1;stem(xn,x)axis([-1 32 0 90])5、 正弦序列()sin(2)x n A fn πϕ=+例2.5:用MA TLAB 实现幅度A=3,频率f=100,初始相位Φ=1.2,点数为32的正弦信号6、 实指数序列()n x n Aa =例2.6:用MA TLAB 实现0.7()3x n e=,点数为32的实指数序列clear all;N=32;A=3;a=0.7;xn=0:N-1;x=A*a.^xn;stem(xn,x)7、 复指数序列 ()(),a j n x n Ae n ω+=∀例2.7:用MA TLAB 实现幅度A=3,a=0.7,角频率ω=314,点数为32的实指数序列 clear all;N=32;A=3;a=0.7;w=314;xn=0:N-1;x=A*exp((a+j*w)*xn);stem(xn,x)8、随机序列利用MATLAB产生两种随机信号:rand(1,N)在区间上产生N点均匀分布的随机序列randn(1,N)产生均值为0,方差为1的高斯随机序列,即白噪声序列例2.8:用MA TLAB产生点数为32的均匀分布的随机序列与高斯随机序列clear all;N=32;x_rand=rand(1,N);x_randn=randn(1,N);xn=0:N-1;figure(1);stem(xn,x_rand)figure(2);stem(xn,x_randn)(三)、离散信号的基本运算1、信号的延迟给定离散信号x(n),若信号y(n)定义为:y(n)=x(n-k),那么y(n)是信号x(n)在时间轴上右移k个抽样周期得到的新序列。
例3.1:正弦序列y(n)=sin(100n)右移3个抽样周期后所得的序列,MATLAB程序如下:clear all;N=32;w=100;k=3;x1=zeros(1,k);xn=0:N-1;x2=sin(100*xn);figure(1)stem(xn,x2)x=[x1 x2];axis([-1 N -1.1 1.1])N=N+k;xn=0:N-1;figure(2)stem(xn,x)axis([-1 N -1.1 1.1])利用for 循环语句实现周期延迟.2、 信号相加若信号12()()()x n x n x n =+,值得注意的是当序列1()x n 和2()x n 的长度不相等或者位置不对应时,首先应该使两者的位置对齐,然后通过zeros 函数左右补零使其长度相等后再相加 例3.2:用MA TLAB 实现两序列相加clear all;n1=0:3x1=[2 0.5 0.9 1];figure(1)stem(n1,x1)axis([-1 8 0 2.1] )n2=0:7x2=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7];figure(2)stem(n2,x2)axis([-1 8 0 0.8] )n=0:7;x1=[x1 zeros(1,8-length(n1))];x2=[ zeros(1,8-length(n2)),x2];x=x1+x2;figure(3)stem(n,x)axis([-1 8 0 2.1])已知f1(t)=sinwt , f2(t)=sin8wt , w=2pi , 求f1(t)+f2(t)和f1(t)f2(t) 的波形图3、 信号相乘信号序列1()x n 和2()x n 相乘所得信号()x n 的表达式为:12()()()x n x n x n =这是样本与样本之间的点乘运算,在MA TLAB 中可采用“.*”来实现,但是在信号序列相乘之前,应对其做与相加运算一样的操作。
例3.3:用MA TLAB 实现上例中两序列相乘clear all;n1=0:3x1=[2 0.5 0.9 1];figure(1)stem(n1,x1)axis([-1 8 0 2.1] )n2=0:7x2=[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7];figure(2)stem(n2,x2)axis([-1 8 0 0.8] )n=0:7;x1=[x1 zeros(1,8-length(n1))];x2=[ zeros(1,8-length(n2)),x2];x=x1.*x2;figure(3)stem(n,x)axis([-1 8 0 0.35])4、 信号翻转信号翻转的表达式为:y(n)=x(-n),在MATLAB 中可以用fliplr 函数实现此操作例3.4:用MA TLAB 实现“信号相加”中的1()x n 序列翻转clear all;n=0:3x1=[2 0.5 0.9 1];x=fliplr(x1);stem(n,x)axis([-1 4 0 2.1] )5、 信号和对于N 点信号()x n ,其和的定义为:1()Nn y x n ==∑例3.5:用MA TLAB 实现“信号相加”中的1()x n 序列和clear all;n=0:3x1=[2 0.5 0.9 1];x=sum(x1)6、 信号积对于N 点信号()x n ,其积的定义为:1()Nn y x n ==∏例3.5:用MA TLAB 实现“信号相加”中的1()x n 序列积clear all;n=0:3x1=[2 0.5 0.9 1];x=prod(x1)7 卷积1、 完成)(1t f 与)(2t f 两函数的卷积运算其中:)4()()(),()(221--==-t u t u t f t u e t f t 在一个图形窗口中,画出)(1t f 、)(2t f 以及卷积结果。