信号实验(02)连续时间系统的时域分析
Posted jinzhi666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号实验(02)连续时间系统的时域分析相关的知识,希望对你有一定的参考价值。
信号实验(02)连续时间系统的时域分析
一.基础知识
1.1.目的
- 深刻理解卷积运算,掌握离散线性卷积、连续线性卷积的计算方法;
- 加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;
- 掌握给定连续系统的冲激响应和阶跃响应
1.2.实验原理
1.微分方程(系统方程)模型
系统零状态响应
% 方程中左边是a右边是b
sys = tf(b, a);
2.冲激响应与阶跃响应
% 冲击响应
y = impulse(sys, t);
% 阶跃响应
y = step(sys, t);
3.卷积
c = conv(a, b);
4.连续卷积
二.例子
2.1.求解零状态响应
y
(
2
)
(
t
)
+
4
y
(
1
)
(
t
)
+
4
y
(
t
)
=
f
(
1
)
(
t
)
+
3
f
(
t
)
y^(2)(t)+4y^(1)(t)+4y(t)=f^(1)(t)+3f(t)
y(2)(t)+4y(1)(t)+4y(t)=f(1)(t)+3f(t)
f
(
t
)
=
e
−
t
ε
(
t
)
f(t)=e^-t\\varepsilon (t)
f(t)=e−tε(t)
求零状态响应
y
(
t
)
y(t)
y(t)
a = [1 4 4];
b = [1 3];
sys = tf(b,a);
td = 0.01;
% td 是间隔
t = 0:td:10;
f = exp(-t);
% 系统的零状态响应
y = lsim(sys, f, t);
plot(t, y);
xlabel('t(see)');
ylabel('y(t)');
grid on
2.2.两个序列卷积后的新序列以及时间变量
利用 conv 函数,编制一个函数文件 dconv,其输出为两个序列卷积后的新序列以及与该新序列对应的时间变量。
function [f,k] = dconv(f1, f2, k1, k2)
% 计算 f1 与 f2 的卷积,并返回与得到的新序列相对应的时间变量
% f1, f2 为输入序列;k1, k2 为 f1, f2 所对应的时间变量范围
% -----------------------------------------------------
f = conv(f1, f2);
k_start = k1(1) + k2(1);
k_end = length(f1) + length(f2) - 2;
k = k_start:(k_start + k_end);
end
2.3.连续卷积
在 dconv 函数和(* )式的基础上,编制一个函数文件 cconv,利用离散卷积和来近似计算连续卷积积分。
function [f, k] = cconv(f1, f2, k1, k2, td)
% 计算 f1 与 f2 的连续卷积,并返回与得到的新序列相对应的时间变量
% 此处显示详细说明
% ---------------------------------
% 讲义中(*) 式计算
f = td * conv(f1, f2);
k_start = k1(1) + k2(1);
k_end = length(f1) + length(f2) - 2;
k = k_start:td:(k_start + k_end * td);
end
三.实验
3.1.零状态响应
y
(
2
)
(
t
)
+
2
y
(
1
)
(
t
)
+
2
y
(
t
)
=
f
(
1
)
(
t
)
,
f
(
t
)
=
ε
(
t
)
y^(2)(t)+2y^(1)(t)+2y(t)=f^(1)(t),f(t)=\\varepsilon (t)
y(2)(t)+2y(1)(t)+2y(t)=f(1)(t),f(t)=ε(t)
计算系统得零状态响应
y
(
t
)
y(t)
y(t),冲击响应,阶跃响应,并画出图形
a = [1 2 2];
% f(t) 没系数就是0
b = [1 0];
sys = tf(b, a);
td = 0.01;
t = 0:td:10;
% 跟t一样维度
f = ones(size(t));
y = lsim(sys,f,t);
subplot(2, 2, 1);
plot(t,y);
xlabel('t(see)');
ylabel('y(t)');
grid on;
% 冲击响应
subplot(2, 2, 2);
d = impulse(sys, t);
plot(t, d);
xlabel('t');
ylabel('冲击响应');
grid on;
% 阶跃响应
subplot(2, 2, 3);
g = step(sys, t);
plot(t, g);
xlabel('t');
ylabel('阶跃响应');
grid on;
3.2.卷积和
用 MATLAB 计算如下两序列的卷积和,绘出它们的时域波形。
% 用 MATLAB 计算如下两序列的卷积和,绘出它们的时域波形。
clear
f1 = [1, 2, 1];
k1 = -1:1;
f2 = [1, 1, 1, 1, 1];
k2 = -2:2;
[f,k] = dconv(f1, f2, k1, k2);
subplot(2, 2, 1);
stem(k1, f1);
xlabel('k1');
ylabel('f1');
grid on
subplot(2, 2, 2);
stem(k2, f2);
xlabel('k2');
ylabel('f2');
grid on
subplot(2, 2, 3);
stem(k, f);
xlabel('k');
ylabel('dconv');
grid on
3.3.连续卷积
编程实现如下图所示的两个波形;并利用 cconv 函数计算这两个信号的卷积、画出卷积后的波形。
% 编程实现如下图所示的两个波形;并利用 cconv 函数计算这两个信号的卷% 积、画出卷积后的波形cleart1 = -5:0.01:5;z1_1 = ((t1 + 1) >= 0);z1_2 = ((t1 - 1) >= 0);f1 = 2 * z1_1 - 2 * z1_2;t2 = -5:0.01:5;z2_1 = ((t2 + 2) >= 0);z2_2 = ((t2 - 2) >= 0);f2 = z2_1 - z2_2;subplot(2, 2, 1);plot(t1, f1);xlabel('t1');ylabel('f1');grid onsubplot(2, 2, 2);plot(t2, f2);xlabel('t2');ylabel('f2');grid on[f, k] = cconv(f1, f2, t1, t2, 0.01);subplot(2, 2, 3);plot(k, f);xlabel('k');ylabel('f');grid on
四.思考题
整理并给出“实验内容与步骤”(1)、(2)、(3)中的程序代码与产生的图形;并回答下面的问题。
- 在“实验内容与步骤”(1),零状态响应 y(t) 和阶跃响应 g(t)是否相同?为什么?
相同,因为零状态响应和阶跃响应在t<0时都没有输入
- 两序列进行卷积后得到新的序列,说明新序列在时域长度、时域区间上与原来两序列的关系。
新序列的长度为原两个序列长度之和,区间为原两个序列的区间首尾相加。
以上是关于信号实验(02)连续时间系统的时域分析的主要内容,如果未能解决你的问题,请参考以下文章
信号与线性系统综合实验 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;