《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算

2.5 离散时间信号中的运算

MATLAB信号处理超级学习手册
2.5.1 离散时间系统响应
离散时间LTI系统可用线性常系数差分方程来描述,即:

其中,a i(i=0,1,…,N)和b j(j=0,1,…,M)为实常数

MATLAB中函数filter可对式(2-24)的差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的语句格式为

y=filter(b,a,x)

其中,x为输入的离散序列;y为输出的离散序列,y的长度与x的长度一样;b与a分别为差分方程右端与左端的系数向量。

运行程序如下:

a=[1 -0.25 0.5];
b=[1 1];
t=0:20;
x=(1/2).^t;
y=filter(b,a,x)
subplot(2,1,1)
stem(t,x)
title('输入序列')
grid on
xlabel('n'); ylabel('h(n)');
subplot(2,1,2)
stem(t,y)
xlabel('n'); ylabel('h(n)');
title('响应序列')
grid on

运行结果如图2-27所示。

2.5.2 离散时间系统的冲激响应和阶跃响应
在MATLAB中,求解离散时间系统单位冲激响应,可应用信号处理工具箱提供的函数impz,其调用形式为:

h=impz(b, a, k)

式中,a,b分别是差分方程左、右端的系数向量,k表示输出序列的取值范围(可省略),h就是系统单位冲激响应(如果没有输出参数,直接调用impz(b, a, k),则MATLAB将会在当前绘图窗口中自动画出系统单位冲激响应的图形)。

对于MATLAB 6.x及以上版本,在信号处理工具箱中还提供了求解离散时间系统单位阶跃响应的函数stepz,其调用形式为:

h=stepz(b,a,k)

式中参数与impz函数相同,如果没有输出参数,直接调用stepz(b,a,k),则MATLAB将会在当前绘图窗口中自动画出系统单位阶跃响应的图形。

【例2-28】用impz函数求下列离散时间系统的单位冲激响应,并与理论值进行比较:

y(k)+3y(k-1)+2y(k-2)=f(k)。

运行程序如下:

k=0:10;
a=[1 3 2];
b=[1];
h=impz(b,a,k);
subplot(2,1,1);stem(k,h);
xlabel('n'); ylabel('h(n)');
title('单位冲激响应的近似值');
grid on;
hk=-(-1).^k+2*(-2).^k;
subplot(2,1,2);stem(k,h);
xlabel('n'); ylabel('h(n)');
title('单位冲激响应的理论值');
grid on;

运行结果如图2-28所示。

2.5.3 离散时间信号的卷积和运算
卷积是用来计算系统零状态响应的有力工具。例如:对于连续时间系统,有y(t)=x(t)h(t),其中h(t)为系统传递函数(即冲激响应);对于离散时间系统,有y(n)=x(n)h(n),其中h(n)为系统传递函数(即单位冲激响应)。

由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为:

可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。

MATLAB信号处理工具箱提供了一个计算两个离散序列卷积和的函数,其调用形式为:

c=conv(a,b)

式中,a、b分别为待卷积的两序列的向量表示,c是卷积结果。向量c的长度为向量a、b的长度之和减1,即length(c)=length(a)+length(b)1。事实上,研究conv.m函数的源代码可知,conv函数其实就是利用前面介绍过的函数来实现的。

【例2-29】已知序列x[n]={1,2,3,4;n=0,1,2,3},y[n]={1,1,1,1;n=0,1,2,3,4};利用MATLAB计算x[n]*y[n]并画出卷积结果。

运行程序如下:

x=[1,2,3,4];
y=[1,1,1,1];
z=conv(x,y)
subplot(3,1,1);
stem(0:length(x)-1,x);
ylabel('x[n]'); xlabel('n');
grid on
subplot(3,1,2);
stem(0:length(y)-1,y);
ylabel('y[n]'); xlabel('n');
grid on
subplot(3,1,3);
stem(0:length(z)-1,z);
ylabel('z[n]'); xlabel('n');
grid on

运行结果如下:

z =
    1     3     6    10     9     7     4

运行结果如图2-29所示。

【例2-30】已知某系统的单位取样响应为hleft( n right) = 0.8^n left[ {uleft( n right) - uleft( {n - 8} right)} right] ,试用MATLAB求当激励信号为x(n) = u(n) - u(n - 4) 时,系统的零状态响应。

运行程序如下:

clear
nx=-1:5;
nh=-2:10;
x=uDT(nx)-uDT(nx-4);
h=0.8.^nh.*(uDT(nh)-uDT(nh-8));
y=conv(x,h);
ny1=nx(1)+nh(1);
ny=ny1+(0:(length(nx)+length(nh)-2));
subplot(311)
stem(nx,x,'fill'),grid on
xlabel('n'),ylabel('x(n)');
title('x(n)')
axis([-4 16 0 3])
subplot(312)
stem(nh,h','fill'),grid on
xlabel('n');ylabel('h(n)');
title('h(n)')
axis([-4 16 0 3])
subplot(313)
stem(ny,y,'fill'),grid on
xlabel('n');ylabel('y(n)');
title('y(n)=x(n)*h(n)')
axis([-4 16 0 3])

运行结果如图2-30所示。

程序中产生单位阶跃子程序如下:

function y=uDT(n)
y=n>=0;
%当参数为非负时输出1
时间: 2024-08-03 03:30:30

《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算的相关文章

《MATLAB信号处理超级学习手册》——2.3 信号在MATLAB中的运算

2.3 信号在MATLAB中的运算 MATLAB信号处理超级学习手册本节利用MATLAB进行离散时间序列的基本运算,掌握基本的MATLAB函数的编写和调试方法,同时了解对连续时间信号的时域运算,加深对信号的时域运算的理解. 2.3.1 信号的时移.反折和尺度变换描离散序列的时域运算包括信号的相加.相乘,信号的时域变换包括信号的移位.反折.尺度变换等.在MATLAB中,离散序列的相加.相乘等运算是两个向量之间的运算,因此参加运算的两个序列向量必须具有相同的维数,否则应进行相应的处理. 离散序列的时

《MATLAB信号处理超级学习手册》——2.2 信号的产生

2.2 信号的产生 MATLAB信号处理超级学习手册 本节将使用MATLAB产生基本信号.绘制信号波形.实现信号的基本运算,为信号分析和系统设计奠定基础. MATLAB提供了许多函数用于产生常用的基本信号,如阶跃信号.脉冲信号.指数信号.正弦信号和周期矩形波信号等,这些基本信号是信号处理的基础. 2.2.1 方波函数 square的调用函数如下所示. x=square(t):类似于sin(t),产生周期为2*pi,幅值为1的方波. x=square(t,duty):产生制定周期的矩形波,其中du

《MATLAB信号处理超级学习手册》——2.6 离散时间系统

2.6 离散时间系统 MATLAB信号处理超级学习手册 离散时间系统还可分成线性和非线性两种.同时具有叠加性和齐次性(均匀性)的系统,通常称为线性离散系统.当若干个输入信号同时作用于系统时,总的输出信号等于各个输入信号单独作用时所产生的输出信号之和,这个性质称为叠加性.齐次性是指当输入信号乘以某常数时,输出信号也相应地乘以同一常数. 不能同时满足叠加性和齐次性的系统称为非线性离散系统.如果离散系统中乘法器的系数不随时间变化,这种系统便称为时不变离散系统:否则就称为时变离散系统. 2.6.1 离散

《MATLAB信号处理超级学习手册》——第2章 时间信号与系统 2.1 离散序列

第2章 时间信号与系统 一个离散时间信号是一个整数值变量n的函数,表示为x(n)或{x(n)}.尽管独立变量n不一定表示"时间"(例如,n可以表示温度或距离),但x(n)一般被认为是时间的函数.因为离散时间信号x(n)对于非整数值n是没有定义的. 离散时间信号的波形绘制在MATLAB中一般用stem函数.stem函数的基本用法和plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的.如果需要实心,需使用参数"fill"."filled&q

《MATLAB信号处理超级学习手册》——2.7 本章小结

2.7 本章小结 MATLAB信号处理超级学习手册 时间信号和系统的理论是数字信号处理的理论基础.本章首先简单介绍了信号中的7种离散序列.然后通过方波函数等10种MATLAB函数举例介绍了信号的产生,并对信号的变换.运算.奇偶分解.微积分等MATLAB运算做了说明.最后,通过介绍连续时间系统分析和离散时间信号运算.离散时间系统的描述,为学习信号处理建立了必要的理论基础.

《MATLAB信号处理超级学习手册》——1.4 本章小结

1.4 本章小结 MATLAB信号处理超级学习手册MATLAB 语言由于语法的简洁性.代码接近自然数学描述方式以及具有丰富的专业函数库等诸多优点,吸引了众多科学研究工作者,越来越成为科学研究.数值计算.建模仿真以及学术交流的事实标准. 本章主要介绍了MATLAB语言的8个特点,并举例说明了MATLAB语言的简洁.方便.然后从MATLAB用户界面.变量及赋值.绘图命令.MATLAB程序的结构流等四个方面说明MATLAB的基本操作.最后对于MATLAB中的重要内容M文件进行了简单介绍.

《MATLAB信号处理超级学习手册》——1.3 M文件

1.3 M文件 MATLAB信号处理超级学习手册创建M文件是MATLAB中的非常重要的内容.事实上,正是由于在MATLAB工具箱中存放着大量的M文件,使得MATLAB在应用起来显得简单.方便,且功能强大. 如果用户根据自己的需要,开发出适用于自己的M文件,不仅能使MATLAB更加贴近用户,而且能使MATLAB的功能得到扩展. M文件有两种形式:命令文件和函数文件.当用户要运行的命令较多时,如果直接在命令窗口中逐条输入和运行,有诸多不便.此时可通过编写命令文件来解决这个问题.另外,从前面的例中可以

《MATLAB信号处理超级学习手册》——1.2 MATLAB基本操作

1.2 MATLAB基本操作 MATLAB信号处理超级学习手册本节主要介绍MATLAB一些入门知识,包括MATLAB桌面和窗口,MATLAB命令格式.数据格式.数据文件和变量管理,MATLAB的变量,MATLAB的程序设计方法,MATLAB作图方法,在线帮助的使用和程序文件.目录的管理等. 1.2.1 MATLAB用户界面启动MATLAB,单击MATLAB图标,进入到用户界面,如图1-1所示. 进入到MATLAB命令窗(MATLAB Command Window),在命令窗内,可以输入命令.编程

《MATLAB信号处理超级学习手册》——2.4 连续时间系统的时域分析

2.4 连续时间系统的时域分析 MATLAB信号处理超级学习手册2.4.1 连续时间系统求解连续时间线性非时变系统(LTI)可以用如下的线性常系数微分方程来描述: 系统的响应一般包括两个部分,即由当前输入所产生的响应(零状态响应)和由历史输入(初始状态)所产生的响应(零输入响应). 对于低阶系统,一般可以通过解析的方法得到响应.但是,对于高阶系统,手工计算就比较困难,这时MATLAB强大的计算功能就比较容易确定系统的各种响应,如冲激响应.阶跃.零状态响应.全响应等. 涉及到的MATLAB函数有: