实验一信号的时域实现与运算 下载本文

图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