1、MATLAB数字信号处理应用MATLAB数字信号处理应用1.序列的基本概念 1.1 离散时间信号的产生 1.单位脉冲序列(n) 解: MATLAB程序如下: n=-5:30; %取点个数 x=zeros(1,5),1,zeros(1,30); %定义序列 stem(n,x,fill); grid on %网格绘制 运行结果: 图3 单位脉冲序列(n)绘制图 2.单位阶跃序列u(n) 解:MATLAB程序如下: n=-5:30; %取点个数 x=zeros(1,5),ones(1,31); %定义序列 stem(n,x,fill); grid on; %网格绘制 运行结果: 图4 单位阶跃序列u
2、(n)绘制图 3.矩形序列R8(n) 解:MATLAB程序如下: n=-5:30; %取点个数 x=zeros(1,5),ones(1,8),zeros(1,23); %定义序列 stem(n,x,fill); grid on; %网格绘制 运行结果: 图5 矩形序列R(n)绘制图 84.正弦型序列x(n)=Asin(?/5*n+?/3) 解:MATLAB程序如下: n=-15:20; %取点数 ph=pi/6; %定义初相 omega=pi/5; %定义角频率 A=3; %取幅值为3 x=A*sin(omega*n+ph); %定义序列 stem(n,x,fill); grid on; 运行
3、结果: 图6 正弦序列绘制图(实验所得的正弦序列的周期T=10) 5.任意序列 例:(1) x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4) 解:MATLAB程序如下: n=-15:20; x=zeros(1,15),1,2,3,4,5,zeros(1,16); stem(n,x,fill); grid on; 运行结果: 图7 序列(1)绘制图 例(2) h(n)= (n)+2(n-1)+(n-2)+2(n-3) 解: n=-15:20; h=zeros(1,15),1,2,1,2,zeros(1,17); stem(n,h,fill); grid on; 运行结果
4、: 图8 序列(2)绘制图 2.2 序列的运算 1.序列的移位(MATLAB指令为circshift) 例:(1) x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4) 右移四位 解: MATLAB程序如下: n=-5:15 %定义序列长度 x=zeros(1,5),1,2,3,4,5,zeros(1,11); y=circshift(x,0,4); %右移四位 stem(n,y,*k); grid on ; 运行结果: 图9 序列(1)右移四位 (2) h(n)= (n)+2(n-1)+(n-2)+2(n-3)左移四位 解:MATLAB程序如下: n=-15:10 h=
5、zeros(1,15),1,2,1,2,zeros(1,7); y=circshift(h,0,-4); stem(n,y,*k); grid on ; 运行结果: 图10 序列(2)左移四位 2.序列的反褶 例:(1)求x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4)的反褶 解: MATLAB程序如下: n=-10:10; x=zeros(1,10),1,2,3,4,5,zeros(1,6); y=fliplr(x); stem(n,y,*k); grid on ; 运行结果: 图11 序列(1)的反褶 (2)h(n)= (n)+2(n-1)+(n-2)+2(n-3
6、)的反褶 解:MATLAB程序如下: n=-10:10 h=zeros(1,10),1,2,1,2,zeros(1,7); y=fliplr(h); stem(n,y,*k); grid on ; 运行结果: 图12 序列(2)的反褶 3.两序列的和 例:已知x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4),h(n)= (n)+2(n-1)+(n-2)+2(n-3) 求序列y(n)=x(n)+h(n)。 解:MATLAB程序如下: n=-10:10; x=zeros(1,10),1,2,3,4,5,zeros(1,6); h=zeros(1,10),1,2,1,2,z
7、eros(1,7); y=x+h; stem(n,y,*k); grid on ; 图13 两序列的和 4.两序列的积 例:已知x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4),h(n)= (n)+2(n-1)+(n-2)+2(n-3) 求序列y(n)=x(n).*h(n)。 解:MATLAB程序如下: n=-10:10; x=zeros(1,10),1,2,3,4,5,zeros(1,6); h=zeros(1,10),1,2,1,2,zeros(1,7); y=x.*h; stem(n,y,*k); grid on ; 运行结果: 图14 两序列的积 5.两序列的
8、标乘(MATLAB指令为dot) 例:已知x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4),h(n)= (n)+2(n-1)+(n-2)+2(n-3) 求序列x(n)、 h(n)的标乘 解:MATLAB程序如下: n=-10:10; x=zeros(1,10),1,2,3,4,5,zeros(1,6); h=zeros(1,10),1,2,1,2,zeros(1,7); y=dot(x,h) 运行结果: y = 16 6.序列的累加 例:(1)求x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4)的累加 解:MATLAB程序如下: n=-10:2
9、0; x=zeros(1,10),1,2,3,4,5,zeros(1,16); y=cumsum(x); stem(n,y,*k); grid on ; 运行结果: 图15 序列(1)的累加 例:(2)求h(n)= (n)+2(n-1)+(n-2)+2(n-3)的累加 解:MATLAB程序如下: n=-10:20; h=zeros(1,10),1,2,1,2,zeros(1,17); y=cumsum(h); stem(n,y,*k); grid on ; 运行结果: 图16 序列(2)的累加 2.3序列的卷积运算 例: x(n)= (n)+2(n-1)+3(n-2)+4(n-3)+5(n-4
10、) h(n)= (n)+2(n-1)+(n-2)+2(n-3) 解:(1)序列卷积计算公式:y(n)=x(n)*h(n)= x(m)h(n-m) (2)根据定义计算y(n) MATLAB程序如下: N=10; M=10; L=N+M-1; x=1,2,3,4,5,zeros(1,5); h=1,2,1,2,zeros(1,6); y=conv(x,h); n=0:L-1; stem(n,y,*k); grid on ; 运行结果: 图17 卷积和结果序列 通用程序: functiony,n=dconv(x,nx,h,nh); x=input(请输入序列(1):x(n)=); nx=input(
11、请输入序列(1)长度(如0:5)=); h=input(请输入序列(2):h(n)=); nh=input(请输入序列(2)长度(如0:5)=); y=conv(x,h) k1=nx(1)+nh(1); k2=length(x)+length(h)-2; n=k1:k1+k2 subplot(131); stem(nx,x,*r); xlabel(nx); ylabel(x(n); grid on ; subplot(132); stem(nh,h,*b); xlabel(nh); ylabel(h(n); grid on ; subplot(133); stem(n,y,*k); xlabe
12、l(n); ylabel(y(n); grid on ; 运行程序:(在命令窗口输入如下指令): 请输入序列(1):x(n)=1 2 3 4 5 请输入序列(1)长度(如0:5)=0:4 请输入序列(2):h(n)=1 2 1 2 请输入序列(1)长度(如0:5)=0:3 运行结果: y = 1 4 8 14 20 20 13 10 n = 0 1 2 3 4 5 6 7 绘制的图形: 图18 通用程序卷积结果 2.4 产生方波信号序列 解: T=6; %周期为6 n=-5:0.1:2*T; %步进为0.1 duty=50; %占空比为50% x=2*square(n,duty); %产生方波,幅值为2 stem(n,x,*k); grid on ; 运行结果: 图19 方波序列绘制图 2.5 产生锯齿波信号序列 解: n = 0:0.05:5; y = 1-mod(x, 1); stem(n,y,*k); grid on ; 图20 方波序列绘制图 2.6 思考题:实验中所产生的正弦序列的频率是多少,是否是周期序列, 答:由2?/?/5=10,10是正整数,所以实验产生的正弦序列是是周期序列,周期为10。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1