stem(n, m x); title( Magnitude ' ) xlabel('n') subplot(224) stem(n, Phase x); title('Phase); xlabel('n'); RealPart 5 gnitud e 200 10 图1.15复指数序列 七、随机序列 MATLAB提供两个产生随机序列的函数: rand(1,n)用于产生[0,1]上均匀分布随机序列,长度为n randn(1,n)用于产生均值为0、方差为1的高斯随机序列,即白噪声序列,长度为n。 【例1.7】用 MATLAB编写程序,生成长度为10的随机序列 %MATLAB PROGRAM 1-8 a d(1,10);
xlabel('n); ylabel('x(n)):title(Random Sequence'); x=randn(1, 10); subplot(222) xlabel('n'): ylabel(x(n));title(Random Sequence); Random sequenc e Random sequence 0 图1.16随机序列 八、周期序列 若x(n)=x(n+T),则x(n)为周期序列。T为周期。 用 MATLAB产生一个信号x(n)的P个周期的周期信号xp(n),用 MATLAB语言 可直接产生 1.3信号的运算 1.3.1连续时间信号 连续时间信号的运算通常有信号的时移、信号倒置、信号加、信号乘、信号微分和积分 等。通过信号运算,可由基本信号生成各种复杂信号 信号的时移 (t)=x(t+t) (r>0) (13-1) 式中,x(t)为原信号,y(t为新信号,y(t)信号波形相对于x(t)信号波形向左平移r 若y(t)=x(t-τ),则y(t)相对于x(t)向右平移τ 二、信号倒置(折叠) y(t)=x(-t) (1.3-2)
y(t)相对于x(t)以纵坐标为对称轴。 三、信号时间尺寸改变 y(t)= x(at) (1.3-3) 式中,a为时间尺寸变换系数, a>1,y(t)波形在时间域内被“压缩”成1/a;0<a<1,y(t)波形在时间域内被“扩展 倍 四、信号加 y(t)=x1(t)±x2(t) (1.3-4) 五、信号微分和积分 y(t) x(t) dt (1.3-5) y(t)=f(r)dt (1.3-6) 1.3.2离散时间信号 离散时间信号一般可用数的序列表示,和连续时间信号类似,序列也可进行运算。这 里介绍序列的基本运算和它的 MATLAE实现。为了便于以后的应用,这里基本运算以 M—文件函数形式给出 信号加 x(n)=x1(n)+x2(n) (1.3-7) 序列加的条件是x1(n)和x2(n)具有相长度,且在相同的采样位置上相加,否则需进 行转换 用 MATLAB实现信号加的函数 sigadd()程序清单如下 function [y, n]=sigadd (xl, nl, x2, n2) n=min(min(n1), min(n2)):max(max(n1), max(n2)) 1(find((n>=min(n1)8(n<=max(n1))==1))=x1; y2(find((n>=min(n2))8(n<=max(n2))==1))=x2; 信号乘 y(n)=x1(n)·x2(n) 序列乘的条件是x1(n)和x2(n)具有相同长度,且在相同的采样位置上相乘,否则需 进行转换。 用 MATLAB编写的实现序列乘的函数 sigmult()程序清单如下 function [y, n]=sigmult(xl, nl, x2, n2) %Implements y(n)=xl(n)*x2(n) 13
n=min(min(n1), min(n2)): max(max(n1), max(n2)) y1-=zeros(l, length(n)); yI(find((n>>=min(n1))&(n<=max(n1))==1))=xI y2(find((n>=min(n2))8(n<=max(n2))==1))=x2; 三、信号移位 序列y(n)相对于序列x(n)左移n。个采样周期 MATLAB编写的实现序列移位函数 sigshift()程序清单如下: function [y, n]=sigshift(x, m, no) %Implements y(m+k)=x(m) n=m+nO y-x? 四、序列折叠 即序列x(n)每一项对n=0的纵坐标折叠,y(n)和x(n)相对于n=0的纵坐标轴对称 用 MATLAB编写的序列折叠函数 sigfold()程序清单如下 function [y, n]=sigfold(x, m,nO) y=fliplr(x) n=-fliplr(n); 五、序列的奇偶性 任何一个序列x(n)都可以分解为偶分量x(n)和奇分量x(n)两部分之和。 XA(n (1.3-11) 偶分量的定义是 x。(n) (1.3-12) 奇分量的定义是 0(-n) (1.3-13) 式(1.3-11)中, (x(n)+x(-n)) (1.3-14) x(n)=(x( (1.3-15) 用 MATLAB编写的函数 sigevenodd()用于将序列分解成偶序列和奇序列两部分, 程序清单如下 function [xeven, xodd, m]=sigevenodd(x, n) Real signal decomposition into even and odd parts
m=fliplr(n); ml=min([m, n)); m2=max([m,n]); m=ml: m2; nm=n(1)-m(1); nl=l: length(n); xl=zeros(l, length(m)) x1(n1+nm)=xix=xl xeven=0.5*(x+fliplr(x)) xodd =0.5*(x-flipIr(x)); 【例1.8】设单位阶跃序列 10≤n<0 1,0≤n≤10 将其分解为偶分量和奇分量 用 MATLAB编写序列分解的程序如下: %MATLAB PROGRAM 1-9 %Create unit Step Sequence n0=0; n=[n1:n2]; x=[(n-no)>=0]; stem(n, x) xlabelC'n'); ylabel(x(n)); title( Step Sequence) %Decomposition of the Sequence Lxeven, xodd, m]=sigevenodd(x, n); stem(m, xeven)i label('m'): ylabel('x even (n)'); title( Even Part);