二、连续系统的响应求解

MATLAB代码:
Matlab
% 电路参数定义
L = 22e-3; % 电感 L = 22 mH
C = 2e-9; % 电容 C = 2 nF
R = 100; % 电阻 R = 100 Ω
% 构建传递函数 H(s) = 1 / (L*C*s^2 + R*C*s + 1)
% 分子系数:b = 1(常数)
% 分母系数:a = [L*C, R*C, 1] 对应 s^2, s^1, s^0 项
a = [L*C, R*C, 1];
b = 1;
% 时间向量定义:从 0 到 1 ms,步长 1 μs(确保足够精细)
t = 0 : 1e-6 : 10e-4; % 等价于 0:1e-6:1e-3
% 计算冲激响应 h(t)(使用 impulse 函数,系统由分子 b 和分母 a 描述)
ht = impulse(b, a, t);
% 计算阶跃响应 g(t)(使用 step 函数)
gt = step(b, a, t);
% 创建 1 行 2 列的子图,绘制冲激响应
subplot(1, 2, 1);
plot(t, ht, 'LineWidth', 1.5); % 绘制曲线,线宽 1.5
grid on; % 显示网格
xlabel('时间 t (s)'); % x 轴标签
ylabel('幅度 h(t)'); % y 轴标签
title('冲激响应'); % 图形标题
% 绘制阶跃响应
subplot(1, 2, 2);
plot(t, gt, 'LineWidth', 1.5); % 绘制曲线,线宽 1.5
grid on; % 显示网格
xlabel('时间 t (s)'); % x 轴标签
ylabel('幅度 g(t)'); % y 轴标签
title('阶跃响应'); % 图形标题
运行结果:

2. 用仿真函数 lsim 计算连续系统的零状态响应。
已知系统的微分方程为:

系统的输入信号为: f (t) =10sin(2*pi*t), 求其零状态响应。
MATLAB代码:
Matlab
% 时间参数设置
ts = 0; % 起始时间 (s)
te = 5; % 结束时间 (s)
dt = 0.01; % 采样步长 (s),决定了时间分辨率
t = ts : dt : te; % 生成时间向量,从0到5秒,步长0.01秒
% 系统传递函数 H(s) = 1 / (s^2 + 2s + 100) 的系数
% 分子多项式系数:b = [1] 对应 1
b = [1]; % 分子系数(按s降幂排列)
% 分母多项式系数:a = [1, 2, 100] 对应 s^2 + 2s + 100
a = [1, 2, 100]; % 分母系数(按s降幂排列)
% 输入信号:幅度为10,频率为1 Hz的正弦波
f = 10 * sin(2 * pi * t); % 输入激励信号 f(t) = 10 sin(2πt)
% 计算零状态响应 y(t)
% lsim 函数用于仿真任意输入下的线性系统响应
% 参数:系统系数 b, a,输入信号 f,时间向量 t
y = lsim(b, a, f, t); % 得到零状态响应
% 绘制响应曲线
plot(t, y, 'LineWidth', 1.5); % 线宽设为1.5使曲线更清晰
xlabel('t / s'); % x轴标签:时间(秒)
ylabel('y_{zs}(t)'); % y轴标签:零状态响应
title('零状态响应'); % 图形标题
grid on; % 显示网格,便于读取数值
运行结果:

练习:已知某连续时间系统的微分方程为:r′′(t)+2r′(t)+r(t)=e′(t)+2e(t)求当输入信号为 e(t)=e^−2tε(t) 时,该系统的零状态响应 r(t)。
MATLAB代码:
Matlab
% 清空环境
clear; clc; close all;
% 时间向量定义 (0 到 10 秒,步长 0.01 秒)
t = 0 : 0.01 : 10;
% 输入信号 e(t) = exp(-2t) * u(t)
e_t = exp(-2 * t) .* (t >= 0); % 阶跃用逻辑表达式实现
% 系统传递函数 H(s) = (s + 2) / (s^2 + 2s + 1)
num = [1, 2]; % 分子系数:s + 2
den = [1, 2, 1]; % 分母系数:s^2 + 2s + 1
sys = tf(num, den); % 创建连续时间传递函数模型
% 使用 lsim 计算零状态响应(数值解)
r_num = lsim(sys, e_t, t);
% 解析解 r(t) = t * exp(-t) * u(t)
r_ana = t .* exp(-t) .* (t >= 0);
% 绘制输入信号
figure;
subplot(2,1,1);
plot(t, e_t, 'LineWidth', 1.5);
xlabel('时间 t (s)');
ylabel('e(t)');
title('输入信号 e(t) = e^{-2t} u(t)');
grid on;
% 绘制零状态响应(数值解与解析解对比)
subplot(2,1,2);
plot(t, r_num, 'b-', 'LineWidth', 1.5); hold on;
plot(t, r_ana, 'r--', 'LineWidth', 1.5);
xlabel('时间 t (s)');
ylabel('r(t)');
title('零状态响应 r(t)');
legend('数值解 (lsim)', '解析解 t e^{-t}');
grid on;
运行结果:
