图2.4(a) 图2.4(b)
结果图分别如图2.4(a), (b)所示,有图可见这两种方法是等效的。但方法2 显得更为简单。 5、单位脉冲序列
既可用ones(1,n)和zeros(1,n)命令,也可用逻辑判断命令生成脉冲序列。 [例2—5]
在n?[?2,20]内生成单位脉冲序列?(n?3)。
方法1: n0=3; n=-2:20;
x=[zeros(1,5),1,zeros(1,17)]; stem(n,x);
axis([-2,20,0,1]);
ylabel('x(n)');xlabel('Time index n'); title('unitary pulse signal');
方法2: n0=3; n=-2:20;
x=(n-n0)==0; stem(n,x);
axis([-2,20,0,1]);
ylabel('x(n)');xlabel('Time index n'); title('unitary pulse signal');
图2.5(a) 图2.5(b)
结果图分别如图2.5(a), (b)所示,有图可见这两种方法是等效的。但方法2 显得更为简单。
6、噪声序列
rand(1,N) 产生N个在[0,1]区间均匀分布的白噪声。
randn(1,N) 产生N个高斯分布(均值为0,协方差为1)的白噪声。
二 常用信号运算
序列常用运算的MATLAB实现如表2-1所示
序列常用运算的MATLAB实现 运算名称 信号幅度变化 信号时移 信号翻转 信号累加 数学表达式 MATLAB实现 Y=alpha*x Y=[zeros(1,k),x] Y=flip(x) Y=cumsum(x) y(n)??x(n) y(n)?x(n?k) y(n)?x(?n) ny(n)?信号差分(或近似微分 信号求和 k????x(k) Y=diff(x) Y=sum(x(n1:n2)) y(n)?x(n?1)?x(n) n2n1y?两个信号相加 两个信号相乘 两个信号卷积 ?x(n) Y=x1+x2 Y=x1*x2 Y=conv(x1,x2) 12(ny(n)?x1(n)?x2(n) y(n)?x1(n)x2(n) y(n)?k????x(k)x?1??k) Y=xcorr(x1,x2) 两个信号相关 Rxx(m)?n????x(n)x2(n?m)
[例2—6] 离散卷积
若x(n)=[1,1,1,10,0],计算离散卷积和y(n)?x(n)*x(n),见图2.6所示。 x=[1,1,1,1,0,0]; y=conv(x,x);
subplot(2,1,1);stem([0:length(x)-1],x); ylabel('x(n)');xlabel('time index n'); title('discrete-time convolution');
subplot(2,1,2);stem([0:length(y)-1],y);
ylabel('y(n)=x(n)*x(n)');xlabel('time index n');
图2.6 离散卷积
[例2—7] 离散时间信号自相关
若x(n)=[1,1,1,10,0],计算x(n)的自相关函数Rxx(m)?x=[1,1,1,1,0,0];
y=xcor r(x,x);
subplot(2,1,1);stem([0:length(x)-1],x);
ylabel('x(n)');title('discrete-time correlation');
m=(length(y)-1)/2;
subplot(2,1,2);stem([-m:m],y);
ylabel('y(n)=rxx(n)'),xlabel('time index n');
n????x(n).x(n?m)。见图2.6所示。
?
图2.7 离散时间信号自相关 [例2—6] 计算离散信号的能量与功率
已知无限长序列x(n)?0.8nu(n),计算前10点的能量占能量的百分比。
序列的能量E??x(n)n?0?2??x(n)xn?0N?1n?0?*(n)
1序列的功率P?N?n?0N?11x(n)?N2?x(n)x*(n)0
前10点的能量计算如下
N=10; n=0:N-1; x=(0.8).^n; e=sum(abs(x).^2)
e=
2.7458 该序列总能量:E?
E=1/(1-0.64) E=2.7778 e/E ans= 0.9885
?x(n)n?0?2?1?2.7778
1?0.64