信号实验(02)连续时间系统的时域分析

Posted 揭航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号实验(02)连续时间系统的时域分析相关的知识,希望对你有一定的参考价值。

信号实验(02)连续时间系统的时域分析

一.基础知识

1.1.目的

  1. 深刻理解卷积运算,掌握离散线性卷积、连续线性卷积的计算方法;
  2. 加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;
  3. 掌握给定连续系统的冲激响应和阶跃响应

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)=etε(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. 在“实验内容与步骤”(1),零状态响应 y(t) 和阶跃响应 g(t)是否相同?为什么?

相同,因为零状态响应和阶跃响应在t<0时都没有输入

  1. 两序列进行卷积后得到新的序列,说明新序列在时域长度、时域区间上与原来两序列的关系。

新序列的长度为原两个序列长度之和,区间为原两个序列的区间首尾相加。

以上是关于信号实验(02)连续时间系统的时域分析的主要内容,如果未能解决你的问题,请参考以下文章

信号实验(02)连续时间系统的时域分析

信号与线性系统综合实验 一、实验目的 1、掌握连续时间信号与系统的时域、频域综合分析方法;

全套完结信号与线性系统分析--Matlab实验报告手册建议保存

数字信号处理实验集合

数字信号处理实验集合

信号与系统实验 02 - | 连续系统的Simulink仿真