当前位置: 首页 > news >正文

数字信号处理|| 离散系统的冲激响应和阶跃响应

一、实验目的

(1)加深对离散线性移不变(LSI)系统基本理论的理解,明确差分方程与系统函数之间的关系。
(2)初步了解用MATLAB语言进行离散时间系统研究的基本方法。
(3)掌握求解离散时间系统冲激响应和阶跃响应程序的编写方法,了解常用子函数。

二、实验涉及的MATLAB子函数

1impz
功能:求解数字系统的冲激响应。
调用格式:
[h,t]=impz(b,a);求解数字系统的冲激响应h,取样点数为缺省值。
[h,t]=impz(b,a,n);求解数字系统的冲激响应h,取样点数由n确定。
impz(b,a);在当前窗口用stem(t,h)函数出图。

2dstep
功能:求解数字系统的阶跃响应。
调用格式:
[h,t]=dstep(b,a);求解数字系统的阶跃响应h,取样点数为缺省值。
[h,t]=dstep(b,a,n);求解数字系统的阶跃响应h,取样点数由n确定。
dstep(b,a);在当前窗口用stairs(t,h)函数出图。

3filter
功能:对数字系统的输入信号进行滤波处理。
调用格式:
y=filter(b,a,x);对于由矢量a、b定义的数字系统,当输入信号为x时,对x中的数据进行滤波,结果放于y中,长度取max(na,nb)。
[y,zf]=filter(b,a,x);除得到结果矢量y外,还得到x的最终状态矢量zf。y=filter(b,a,x,zi);可在zi中指定x的初始状态。

4filtic
功能:为filter函数选择初始条件。
调用格式:
z=filtic(b,a,y,x);求给定输入x和y时的初始状态。
z=filtic(b,a,y);求x=0,给定输入y时的初始状态。
其中,矢量x和y分别表示过去的输入和输出:
x=[x(-1),x(-2),…,x(-N)]
y=[y(-1),y(-2),…,y(-N)]说明:以上子函数中的b和a,分别表示系统函数H(z)中由对应的分子项和分母项系数所构成的数组。如式(4-2)所示,H(z)按z-1(或z)的降幂排列。在列写b和a系数向量时,两个系数的长度必须相等,它们的同次幂系数排在同样的位置上,缺项的系数赋值为0。
在MATLAB信号处理工具箱中,许多用于多项式处理的函数,都采用以上的方法来处理分子项和分母项系数所构成的数组。在后面的实验中不再说明。

三、实验原理

1离散LSI系统的响应与激励
由离散时间系统的时域和频域分析方法可知,一个线性移不变离散系统可以用线性常系数差分方程表示:

也可以用系统函数来表示:

系统函数H(z)反映了系统响应与激励间的关系。一旦上式中的bm和ak的数据确定了,则系统的性质也就确定了。其中特别注意:a0必须进行归一化处理,即a0=1。
对于复杂信号激励下的线性系统,可以将激励信号在时域中分解为单位脉冲序列或单位阶跃序列,把这些单元激励信号分别加于系统求其响应,然后把这些响应叠加,即可得到复杂信号加于系统的零状态响应。因此,求解系统的冲激响应和阶跃响应尤为重要。由图4-1可以看出一个离散LSI系统响应与激励的关系。同时,图4-1显示了系统时域分析方法和z变换域分析法的关系。如果已知系统的冲激响应h(n),则对它进行z变换即可求得系统函数H(z);反之,知道了系统函数H(z),对其进行z逆变换,即可求得系统的冲激响应h(n)。

2用impz和dstep子函数求解离散系统的单位冲激响应和阶跃响应
在MATLAB语言中,求解系统单位冲激响应和阶跃响应的最简单的方法是使用MATLAB提供的impz和dstep子函数。
下面举例说明使用impz和dstep子函数求解系统单位冲激响应和阶跃响应的方法。

四、实验任务

(1)认真阅读实验原理部分,明确本次实验目的,复习有关离散LSI系统的理论知识。
(2)读懂实验原理并编写例题程序,理解每一条语句的意义,了解用MATLAB进行离散时间系统冲激响应和阶跃响应求解的方法、步骤,熟悉MATLAB与本实验有关的子函数。
(3)列写已调试通过的实验任务程序,打印或描绘实验程序产生的曲线图形。

五、实验程序及运行结果

1已知一个因果系统的差分方程为
6yn+2yn-2=xn+3xn-1+3xn-2+xn-3
满足初始条件y-1=0,x-1=0,求系统的单位冲激响应和阶跃响应。
解 将y(n)项的系数a0进行归一化,得到

 分析上式可知,这是一个3阶系统,列出其bm和ak系数:

 MATLB程序如下(取N=32点作图):

a = [1, 0, 1/3, 0];  % 滤波器的分母系数
b = [1/6, 1/2, 1/2, 1/6];  % 滤波器的分子系数
N = 32;  % 定义冲激响应和阶跃响应的点数
n = 0:N-1;  % 创建时间序列
% 求时域单位冲激响应
hn = impz(b, a, n);
% 求时域单位阶跃响应
gn = dstep(b, a, n);
% 使用subplot(1, 2, i)创建1行2列的子图布局,并在第i个子图中绘图
subplot(1, 2, 1); stem(hn, 'filled');  % 显示冲激响应曲线
title('系统的单位冲激响应');  % 设置标题
ylabel('h(n)');  % 设置y轴标签
xlabel('n');  % 设置x轴标签
axis([0 N 1.1*min(hn) 1.1*max(hn)]); % 限定显示范围
subplot(1, 2, 2); stem(gn, 'filled');  % 显示阶跃响应曲线
title('系统的单位阶跃响应');  % 设置标题
ylabel('g(n)');  % 设置y轴标签
xlabel('n');  % 设置x轴标签
axis([0 N 1.1*min(gn) 1.1*max(gn)]); % 限定显示范围

运行结果:

2用filtic和filter子函数求解离散系统的单位冲激响应
MATLAB提供了两个子函数filtic和filter来求解离散系统的响应。当输入信号为单位冲激信号时,求得的响应即为系统的单位冲激响应;当输入信号为单位阶跃信号时,求得的响应即为系统的单位阶跃响应。

1)已知一个因果系统的差分方程为
6yn-2yn-4=xn-3xn-2+3xn-4-xn-6
满足初始条件y-1=0,x-1=0,求系统的单位冲激响应和单位阶跃响应。时间轴上N取32点作图。
解: 将y(n)项的系数a0进行归一化,得到

分析上式可知,这是一个6阶系统,直接用MATLAB语言列出其bm和ak系数:

a=[1,0,0,0,-1/3,0,0];
b=[1/6,0,-1/2,0,1/2,0,-1/6];

注意:原公式中存在着缺项,必须在相应的位置上补零。

MATLAB程序如下:

x01 = 0;  % 初始条件
y01 = 0;  % 初始条件
N = 32;   % 采样点数
a = [1, 0, 0, 0, -1/3, 0, 0];  % 差分方程系数
b = [1/6, 0, -1/2, 0, 1/2, 0, -1/6];  % 差分方程系数% 求等效初始条件的输入序列
xi = filtic(b, a, x01, y01);
% 建立N点的时间序列
n = 0:N-1;
% 建立输入单位冲激信号 x1(n)
x1 = (n == 0);
% 对输入单位冲激信号进行滤波,求冲激响应
hn = filter(b, a, x1, xi);
% 建立输入单位阶跃信号 x2(n)
x2 = (n >= 0);
% 对输入单位阶跃信号进行滤波,求阶跃响应
gn = filter(b, a, x2, xi);
% 显示系统单位冲激响应
subplot(1, 2, 1);
stem(n, hn);
title('系统单位冲激响应');
% 显示系统单位阶跃响应
subplot(1, 2, 2);
stem(n, gn);
title('系统单位阶跃响应');

运行结果:

 六、实验心得

离散系统的冲激响应和阶跃响应实验中,我加深了对离散线性移不变(LSI)系统基本理论的理解,并初步掌握了使用MATLAB求解离散时间系统的冲激响应和阶跃响应的方法。使用impzdstep函数进行系统响应分析的过程让我印象深刻。编写相应的MATLAB程序并观察系统响应曲线,让我对系统的动态行为有了了解。

相关文章:

  • Web3 学习全流程攻略
  • CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
  • 【AI大模型学习路线】第一阶段之大模型开发基础——第五章(提示工程技术-2)Active-prompt。
  • JavaScript 数组去重:11 种方法对比与实战指南
  • 每天五分钟机器学习:KTT条件
  • QMK自定义4*4键盘固件创建教程:最新架构详解
  • HTTP 的发展史:从前端视角看网络协议的演进
  • Spring 必会之微服务篇(2)
  • Unity Shaders and Effets Cookbook
  • 汽车四缸汽油机曲柄连杆机构设计关键技术研究
  • 测试左移系列-产品经理实战-实战认知1
  • SpringCloud之Gateway基础认识-服务网关
  • 搜索与图论
  • 用java+vert.x开发的内网穿透工具jrp-nat
  • MySQL 从入门到精通(三):日志管理详解 —— 从排错到恢复的核心利器
  • 互联网大厂Java求职面试:AI集成场景下的技术挑战与架构设计
  • 进程间通信--管道【Linux操作系统】
  • Docker、Docker-compose、K8s、Docker swarm之间的区别
  • Linux基本指令(一)
  • LeetCode LCR 007. 三数之和 (Java)
  • 网红街区如厕难,如何多管齐下补缺口?
  • 巴基斯坦总理:希望通过和平对话方式解决与印方问题
  • 印度外交秘书:印巴军方将于12日再次对话
  • 洲际酒店:今年第一季度全球酒店平均客房收入同比增长3.3%
  • 85后清华博士黄佐财任湖北咸宁市咸安区委副书记、代区长
  • 国家主席习近平同普京总统签署关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明