武汉理工复试上机练习———(一)信号与系统

二、连续系统的响应求解

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;

运行结果:

相关推荐
联丰迅声19 小时前
城市生命线的“听觉”缺口:声振感知如何补上监测闭环
信号处理·故障诊断·传感器·城市生命线
星夜离尘5621 小时前
MATLAB ADC 码流触顶诊断:命中数、缺口分段与削顶不可辨识性
开发语言·matlab
Evand J1 天前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
iCxhust1 天前
MATLAB SPWM仿真
开发语言·matlab
花月mmc1 天前
FPGA数字信号处理与深度学习
嵌入式硬件·深度学习·fpga开发·信号处理
Moonnnn.2 天前
【MATLAB】零基础入门
matlab
进击的荆棘2 天前
Linux系统——进程信号之保存和捕捉信号
linux·运维·服务器·信号处理·信号
且撷相思红豆枝3 天前
Simulink学习笔记(一)
笔记·学习·matlab
星夜离尘563 天前
MATLAB 角度解缠遇到丢样:先分段,再说明圈数为什么不可恢复
开发语言·matlab
chhttty4 天前
Simulink电机控制框架
matlab·simulink