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

二、连续系统的响应求解

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;

运行结果:

相关推荐
Promise微笑3 小时前
回路电阻测试仪采购:多维度技术评估与深度避坑指南
开发语言·matlab·语音识别
程高兴19 小时前
PMSM基于在线转动惯量辩识的滑模负载转矩观测器MATLAB-SIMULINK仿真模型
开发语言·matlab
2zcode2 天前
项目文档:基于MATLAB低采样率ISAR成像的快速稀疏重建算法研究
开发语言·算法·matlab
matlab代码2 天前
Matlab基于主成分分析PCA人脸识别系统(GUI界面)【源码44期】
开发语言·matlab·人脸识别
茗创科技3 天前
CGE连接组:用基因表达解码脑疾病的异质性(附高分文献下载)
python·matlab·脑网络
EW Frontier4 天前
GRAIL-SCML:一种几何正则化自适应集成似然的波达方向估计算法【附MATLAB代码】
matlab·自适应·宽带·doa估计·波达方向估计·几何正则化·窄带
程高兴4 天前
三相维也纳整流器仿真Simulink(解决过零畸变问题)
matlab
通信仿真爱好者4 天前
第【70】期--noma与ofdma在无线网络中的性能对比分析--MATLAB完整代码
matlab·非正交多址接入·noma·ofdma
爱吃提升5 天前
MATLAB impulse函数脉冲响应完整实操教程
开发语言·matlab
我爱C编程5 天前
基于K层下行异构蜂窝网络的网络覆盖率和速率计算matlab仿真
网络·matlab·异构蜂窝网络·k层下行·网络覆盖率