离散信号和系统分析的MATLAB实现.docVIP

  • 34
  • 0
  • 约2.87万字
  • 约 55页
  • 2018-04-30 发布于河南
  • 举报
离散信号和系统分析的MATLAB实现

离散信号和系统分析的MATLAB实现 利用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无法表示一个无穷长的序列。 利用MATLAB计算单位脉冲序范围内各点的取值。 解: %progran 1_1 产生单位脉冲序列 Ks=-4;ke=4;n=2; K=[ks:ke]; X=[(k-n)==0]; Stem(k,x):xlabel(‘k’); 程序产生的序列波形如图1-49所示。 利用MATLAB画出信号 X[k]=10sin(0.02)+n[k], 的波形。其中n[k]表示为均值为0方差为1的Gauss分布随机信号。 解: MALAB提供了两个产生(伪)随机序列的函数。Rand(1,N)产生1行N列的[0,1]均匀分布随机数。Randn(1,N)产生1行N列均值为0方差为1的Gauss分布随机数。 %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-40试用MATLAB函数conv计算例1-2中序列的卷积。 解: 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); xlabel(‘k’);ylabel(‘y’); 程序的运行结果如图1-51所示。 1.9.3 离散LTI系统响应MATLAB求解 许多离散LTI都可用如下的线性常系数的差分方程描述 (1-151) 其中x[k]、y[k]分别系统的输入和输出。在已知差分方程的N个初始状态y[k],和输入x[k],就可由下式迭代计算出系统的输出。 y[k]=- 利用MATLAB提供的filter函数,可方便地计算出上述差分方程的零状态响应。filter函数调用形式为 y=filter(b,a,x) 其中 a=[a0,a1,…,aN], b=[bo,b1,…,bM] 分别表示差分方程系数。X表示输入序列,y表示输出序列。输出序列的长度和序列相同。 试用M=9点滑动平均系统 y[k]= 处理例1-39中的受噪声干扰的正弦信号。 解: 由式(1-151)可知,M点滑动平均系统可看成是N=0的差分方程。在调用filter函数时,调用参数a=1,b为有M个元素的向量,b中每个元素的值均为1/M。 %program 1_4 滑动平均去噪 M=9; N=100;k=0:N; s=10*sin(0.02*pi*k); x=s+randn(1,N+1); b=ones(M,1)/M; a=1; y=filter(b,a,x); plot(k,y,s,’:’); xlabel(‘k’); ylabel(‘幅度’) legend(‘y[k]’,’s[k]’); 程序的运行结果如图1-52所示。图中的虚线表示未受噪声干扰的原信号s[k],实线为9点

文档评论(0)

1亿VIP精品文档

相关文档