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

二、连续系统的响应求解

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;

运行结果:

相关推荐
南宫萧幕1 天前
HEV能量管理策略 Simulink 实战:从零搭建 Rule-based 与 A-ECMS 对比模型及排错指南
人工智能·算法·matlab·simulink·控制
吃好睡好便好1 天前
在Matlab中绘制马鞍函数曲面图
开发语言·人工智能·学习·算法·matlab·信息可视化
alxraves1 天前
超声图像前端信号处理的关键技术
前端·fpga开发·信号处理
fie88892 天前
基于 MATLAB 的前景背景分割系统
开发语言·matlab
2zcode2 天前
基于MATLAB的5G物理层文本传输系统仿真与性能分析
开发语言·5g·matlab
feifeigo1232 天前
基于布谷鸟算法的配电网分布式电源选址定容 MATLAB 实现
开发语言·算法·matlab
rit84324992 天前
基于MATLAB平台的指纹识别系统实现
开发语言·matlab
机器学习之心2 天前
多工况车速数据集训练BiLSTM-Attention用于车速预测,输出未来多个时间步车速,MATLAB代码
matlab·attention·bilstm·车速预测
jghhh012 天前
燃料电池电源 Matlab 仿真方案
开发语言·matlab
wearegogog1232 天前
用于脑电信号(EEG)分类的 SVM 分类器 Matlab 实现
支持向量机·matlab·分类