1 1.9 离散信号和系统分析的MATLAB 实现 1.9.1 利用MATLAB 产生离散信号 用MATLAB 表示一离散序列x[k]时,可用两个向量来表示。其中一个向量表示自变量k 的取值范围,另一个向量表示序列x[k]的值。例如序列x[k]={2,1,1,-1,3,0,2}可用 MATLAB 表示为 K=-2:4;x=[2,1,1,-1,3,0,2] 可用stem(k,f)画出序列波形。 当序列是从 k=0 开始时,可以只用一个向量x 来表示序列。由于计算机内寸的限制,MATLAB 无法表示一个无穷长的序列。 例1-38 利用MATLAB 计算单位脉冲序44]2[kk在范围内各点的取值。 解: %progran 1_1 产生单位脉冲序列 Ks=-4;ke=4;n=2; K=[ks:ke]; X=[(k-n)==0]; Stem(k,x):xlabel(‘k’); 程序产生的序列波形如图 1-49 所示。 例1-39 利用MATLAB 画出信号 X[k]=10sin(0.02 k )+n[k], 1000 k 的波形。其中 n[k]表示为均值为 0 方差为 1 的Gauss 分布随机信号。 解: 2 MALAB 提供了两个产生(伪)随机序列的函数。Rand(1,N)产生1 行 N 列的[0,1]均匀分布随机数。Randn(1,N)产生1 行 N 列均值为0 方差为 1 的Gau ss 分布随机数。 %program 1_2 产生受噪声干扰的正弦信号 N=100;k=0:N; X=10*sin(0.02*pi*k)+randn(1,N+1); Plot(k,x ); Xlabel(‘k’); Ylabel(‘x [k]’); 程序产生序列如图 1-50 所示。 1 .9 .2 离散卷积的计算 离散卷积是数字信号处理中的一个基本运算,MTLAB 提供的计算两个离散序列卷积的函数是 conv ,其调用方式为 y =conv (x ,h) 其中调用参数x ,h 为卷积运算所需的两个序列,返回值 y 是卷积结果。 MATLAB 函数conv 的返回值 y 中只有卷积的结果,没有 y 的取值范围。由离散序列卷积的性质可知,当序列x 和 h 的起始点都为k=0 时,y 的取值范围为 k=0 至 length(x )+length(h)-2。当序列x 或(和)h 的起始点不是 k=0 时,由例 1-3 知,y 的非零值范围可根据例 1-4的结论进行计算。 例 1 -4 0 试用 MATLAB 函数conv 计算例 1-2 中序列的卷积。 解: 3 program 1_3 计算离散卷积 x =[-0.5,0,0.5,1]; %序列x 的值 kx =-1:2; %序列x 的取值范围 h=[1,1,1]; kh=-2:0; y =conv (x ,h); %计算卷积 k=kx (1)+kh(1):kx (end)+kh(end); %计算y 的取值范围 stem(k,y ); x label(‘k’);y label(‘y ’); 程序的运行结果如图1-51 所示。 1.9...