数字信号处理讲义
n=[n1:n2]; x=[(n-n0)==0];
2.单位阶跃序列
stepseq.m
function[x,n]=stepseq(n0,n1,n2) %Generates x(n)=u(n0);n1<=n0<=n2 %-------------------------- %[x,n]=stepseq(n0,n1,n2) %
if((n0
error(ˊarguments must satisfy n1<=n0<=n2ˊ) end n=[n1:n2]; x=[(n-n0)>=0]; 3.信号加
sigadd.m
function[y,n]=sigadd(x1,n1,x2,n2) %implements y(n)=x1(n)+x2(n) %-------------------------------- %[y,n]=sigadd(x1,n1,x2,n2)
%y=sum sequence over n, which includes n1 and n2
%x1=first sequence over n1
%x2=second sequence over n2(n2 can be different from n1)
12
数字信号处理讲义
%
n=min(min(n1),min(n2):max(max(n1),max(n2))); y1=zeros(1,length(n));y2=y1;
y1(find((n>=min(n1)&(n
sigmult.m
function[y,n]=sigmult(x1,n1,x2,n2) %implements y(n)=x1(n)*x2(n) %---------------------------------- %[y,n]=sigmult(x1,n1,x2,n2)
%y=product sequence over n ,which includes n1 and n2
%x1=first sequence over n1
%x2=second sequence over n2(n2 can be different from n1) %
n=min(min(n1),min(n2):max(max(n1),max(n2))); y1=zeros(1,length(n));y2=y1;
y1(find ((n>=min(n1))&(n<=max(n1))= =1))=x1; y2(find((n>=min(n2))&(n<=max(n2))= =1))=x2; y=y1.*y2 5.移位
sigshift.m
13
数字信号处理讲义
function[y,n]=sigshift(x,m,n0) %implements y(n)=x(n-n0) %---------------------------------- %[y,n]=sigshift(x,m,n0) %
n=m+n0;y=x; 6.折叠
sigfold.m
function[y,n]=sigfold(x,n) %implements y(n)=x(-n) %--------------------------- %[y,n]=sigsfold(x,n) %
y=fliplr(x);n=-fliplr(n); 7 奇偶综合
evenodd.m
function [xe,xo,m]=evenodd(x,n)
%Real signal decomposition into even and odd parts %------------------------------ %[xe,xo,m]=evenodd(x,n) %
if any (imag(x)=0)
error(ˊx is not a real sequenceˊ)
14
数字信号处理讲义
end m=-fliplr(n);
m1=min([m,n]);m2=max([m,n]);m=m1:m2; nm=n(1)-m(1);n1=1:length(n); x1=zeros(1,length(m)); x1(n1+nm)=x;x=x1; xe=0.5*(x+fliplr(x)); xo=0.5*(x-fliplr(x));
【例2-1】实验任务3.(1)产生下列序列并绘出离散图:
x(n)=2δ(n+2)-δ(n-4) -5≤n≤5
解: 利用MATLAB及信号处理工具箱函数,再加上前面构造的几个函数如sigadd,sigmult等,可很容易编写出可直接执行的MATLAB程序ex31.m:
%Example 3.1
%a) x(n)=2*delta(n+2)-delta(n-4), -5<=n<=5 %figure(1);clf n=[-5:5];
x=2* impseq (-2,-5,5)-impseq(4,-5,5);
subplot(2,2,1);stem(n,x);title (′Sequence in Example 3.1a′);
【例2-2】
设线性时不变(LTI)系统的单位冲激响应为
h(n)=(0.9)nu(n)
输入序列为
x(n)=u(n)-u(n-10)
求系统输出y(n)。 解: 系统输出y(n)为输入x(n)与系统单位冲激响应h(n)的卷积,可直接采用conv-m函数求出输出序列。MATLAB程序为ex22.m:
15
数字信号处理讲义
%Example2-2
%x(n)=[u(n)-u(n-10)];h(n)=(0.9)^n*u(n) n=0:04 %y(n)=conv(x,h) %
n=-5:50;
u1=stepseq(0,-5,50);u2=stepseq(10,-5,50); %input x(n) x=u1-u2;
%impulse response h(n) h=((0.9).^n).*u1; figure(1)
subplot (3,1,1);stem(n,x);axis([-5,50,0,2]) title(′Input Sequence′) ylabel(′x(n)′)
subplot(3,1,2);stem(n,h);axis([-5,50,0,2]) ylabel(′h(n)′) %output response
[y,ny]=conv_m(x,n,h,n);
subplot(3,1,3);stem(ny,y);axis([-5,50,0,8]) gtext(′Impulse Response′) xlabel(′n′),ylabel(′y(n)′)
执行结果分析所得的序列的离散图.
实验报告要求
1. 实验报告包括目的、要求、内容、步骤、结果、总结,形成完整实验报告。实验步骤不是书本内容的复制,而是自己结合实验内容进行探索的过程。
2. 提交打印版实验报告,A4纸张打印,并附源程序清单。
3. 提交的报告和源程序中标注清楚姓名学号专业等基本信息,禁止抄袭。
16