实验内容
题目一
系统输入为x(t)=e−tcos(3t)(u(t)−u(t−2)),其冲激响应ℎ(𝑡) = t−1 (𝑢(𝑡 − 1) − 𝑢(𝑡 − 3)),计算其输出𝑦(𝑡) = 𝑥(𝑡) ∗ℎ(𝑡) (可调用函数 conv)。在多张子图上绘制𝑥(𝑡)、ℎ(𝑡)及𝑦(𝑡)的图像, 绘图区间均为[-1, 6];要求有坐标轴标注(xlabel,ylabel)以及图题 (title)
踩坑点
最开始十分直接的写完x(t)
和h(t)
求卷积就画图了,直接报错,经一番排查发现需要注意两点:
-
虽然ℎ(𝑡) = t−1 (𝑢(𝑡 − 1) − 𝑢(𝑡 − 3)),但若直接写为h=(Heaviside(t-1)-Heaviside(t-3))./t;
MatLab计算过程1中会出现NaN,这是由于在t=0处,h(t)出现了0/0不定型,但实际可以用洛必达法则求得h(0)=0,故将分母加一个小量修正为h=(Heaviside(t-1)-Heaviside(t-3))./(t+eps)
-
求卷积后坐标范围会发生变化,求得的y(t)与t本身的坐标范围并不一一对应,实际上假设对x(k)和h(k)做卷积,x(k)的区间范围为n1:n2,h(k)的区间范围为m1:m2,模拟卷积步骤 翻转 移位 相乘 累加,如图h(−k)左移的极限长度是−m1−n1,故y(k)=x(k)∗h(k)的左侧起点为m1+n1,同理得右侧终点为m2+n2,整个序列长为m2+n2−m1−n1+1=len(x(k))+len(h(k))−1.
在本题中y(t)的坐标范围就是[−2,12],需要在新坐标上作图再截取[−1,6]范围,否则会出错.
![7da04e6eafe83d6597e84a018b6735b](https://cdn.jsdelivr.net/gh/Skye-rs/CDN/image/loading.gif)
-
调用conv
计算卷积时需要*dt,因为conv(u,v)
返回向量u,v
的卷积,而连续信号的卷积定义为u(k)∗v(k)=∫−∞+∞u(t)v(k−t)dt,需要乘以微量dt
代码
clear all; ts=-1;te=6;dt=0.01; t=ts:dt:te; x=exp(-1*t).*cos(3*t).*(Heaviside(t)-Heaviside(t-2)); h=(Heaviside(t-1)-Heaviside(t-3))./(t+eps);
y=conv(x,h)*dt;
ty=-2:dt:12; subplot(3,1,1); plot(t,x);grid; xlabel('t');ylabel('x(t)');title('输入信号x(t)的波形'); subplot(3,1,2); plot(t, h);grid; xlabel('t');ylabel('h(t)');title('冲激响应h(t)的波形'); subplot(3,1,3); plot(ty,y);grid;axis([-1,6,-0.5,0.5]) xlabel('t');ylabel('y(t)');title('系统输出y(t)的波形');
|
仿真图![1](https://cdn.jsdelivr.net/gh/Skye-rs/CDN/image/loading.gif)
题目二
对离散时间线性时不变系统 𝑦[𝑛] = 𝑥[𝑛] ∗ h[𝑛] , 有 h[𝑛] = 2 −𝑛(𝑢[𝑛] − 𝑢[𝑛 − 6]),当该系统的输入𝑥[𝑛] = 𝑒 −0.05𝑛 (𝑢[𝑛 + 8] − 𝑢[𝑛 − 4])时,计算该系统的输出𝑦[𝑛];要求在多张子图上绘制 𝑥[𝑛]、h[𝑛]及𝑦[𝑛]的图像(使用 subplot),绘图区间均为[-10, 10], 要求有坐标轴标注及图题。提示:使用 stem 函数。
整体做法与题一相似,对应地换为离散信号即可。
代码
clear all; ns=-10;ne=10;dn=1; n=ns:dn:ne; x=exp(-0.05*n).*(jyxl(n+8)-jyxl(n-4)); h=(jyxl(n)-jyxl(n-6))./(2.^n);
y=conv(x,h);
ny=-20:dn:20; subplot(3,1,1); stem(n,x);grid; xlabel('n');ylabel('x(n)');title('输入信号x(n)'); subplot(3,1,2); stem(n, h);grid; xlabel('n');ylabel('h(n)');title('冲激响应h(n)'); subplot(3,1,3); stem(ny,y);grid;axis([-10,10,-5,5]) xlabel('n');ylabel('y(n)');title('系统输出y(n)');
|
仿真图
![2](https://cdn.jsdelivr.net/gh/Skye-rs/CDN/image/loading.gif)
题目三
线性时不变系统的微分方程为:𝑦’(𝑡) + 2𝑦(𝑡) = 𝑥(𝑡),求其冲激以及阶跃响应,并在同一张图上绘图(使用 hold on),横坐标区间为 [0, 5],要求有坐标轴标注、图题以及图例(legend)。提示:可分 别使用 impulse 与 step 函数求解
分别调用impulse()
和step()
函数求解冲激响应和阶跃响应。
代码
clear all; ts=0;te=5;dt=0.01; num=[1]; den=[1 2]; sys=tf(num,den); t=ts:dt:te; y=impulse(sys,t); plot(t,y,'r');grid; xlabel('time(sec)'); hold on; step(num,den,'b');grid; legend('冲激响应', '阶跃响应') title('系统的冲激及阶跃响应') axis([0,5,0,1])
|
仿真图
![3](https://cdn.jsdelivr.net/gh/Skye-rs/CDN/image/loading.gif)
题目四
因 果 线 性 时 不 变 系 统 的 微 分 方 程 为 𝑦’’(𝑡) + 𝑦’(𝑡) + 2𝑦(𝑡) = 𝑥’(𝑡) + 2𝑥(𝑡),输入为𝑥(𝑡) = (𝑒 −𝑡 + 𝑒 −2𝑡 )𝑢(𝑡)。请分别使用冲激响应卷积法以及调用 lism 函数的方法求解并画出系统对𝑥(𝑡)的零状态响应(在多张子图上绘制);要求有坐标轴标注以及图题。横坐 标区间自定,使结果清晰即可。
零输入响应——无输入下的系统响应,即某一状态下的响应
零状态响应——认为没有初始状态,系统对于外界输入的响应,求解即解微分方程
系统的零状态响应=激励与系统冲激响应的卷积,r(t)=x(t)∗h(t),使用residue()
函数求得冲激h(t)后再做卷积即可。
代码
clear all; ts=0;te=15;dt=0.01; num=[0 1 2]; den=[1 1 2]; sys=tf(num,den); t=ts:dt:te; f=(exp(-1*t )+exp(-2*t)).*Heaviside(t); y=lsim(sys,f,t); subplot(2,1,1); plot(t,y); xlabel('t(sec)');ylabel('y(t)');grid;title('lism函数法求零状态响应'); subplot(2,1,2);
[r,p,k]=residue(num,den); h=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t); g=conv(f,h)*dt; x=0:dt:30; plot(x,g);grid;axis([0,15,-0.5,1.5]); xlabel('x(sec)');ylabel('g(x)');title('冲激响应卷积法求零状态响应');
|
仿真图
![4](https://cdn.jsdelivr.net/gh/Skye-rs/CDN/image/loading.gif)
思考题
连续、离散信号卷积的定义?卷积的作用是?
连续信号卷积定义为
(f1∗f2)(t):=f1(t)∗f2(t):=∫−∞+∞f1(τ)f2(t−τ)dτ:=∫−∞+∞f1(t−τ)f2(τ)dτ
离散信号卷积定义为
(f∗g)[n]=m=−∞∑∞f[m]g[n−m]=m=−∞∑∞f[n−m]g[m]
卷积的实质是对一个函数(如单位响应)在另一个函数(如输入信号)上的加权叠加,对于线性时不变系统,将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应加权叠加,就直接得到了输出信号。所以卷积的一个作用就是将一个函数拆分成一系列冲激,便于做其他计算与应用。
conv 函数输出的数组长度与输入长度有何关系?如何将输出结果与时间向量相对应?
设输入为x(k)和h(k),具体分析见题目一的过程中,输出长度为len(x(k))+len(h(k))−1.输出结果的区域为[m1+n1,m2+n2],以此区域的时间向量与输出结果一一对应
收获与感想
通过本次实验,我学会了
-
连续时间信号卷积及其 MATLAB 实现方法
conv(u,v)
求u*v
,求解连续信号卷积时需*dt
-
连续系统的冲激响应、阶跃响应及其 MATLAB 实现方法
求解冲激响应——y = impulse(sys, t)
求解阶跃响应——y = step(sys, t)
-
利用 MATLAB 求 LTI 系统响应的方法
- 利用
lsin()
函数求解零初始条件下微分方程数值解
- 使用冲激响应卷积法,先求冲激响应,系统响应=冲激响应卷积输入信号
-
进一步掌握了MATLAB的画图方法,增加图题、图示等
并且进一步加深了对卷积和一些课上遇到的概念如零状态响应、零输入响应的理解,收获良多。
Author:
紫炁
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?