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

二、连续系统的响应求解

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;

运行结果:

相关推荐
chhttty1 小时前
Design Verifier检查:整型数溢出检查与修复
matlab·simulink
吃好睡好便好6 小时前
判断函数的使用
学习·算法·matlab·生活·判断函数
hu9245195597 小时前
Matlab保护源代码—P文件和exe文件详细解析
开发语言·matlab
史上最甜的躯7 小时前
控制系统——基础、导论;以直流电机控制系统为例详解微分方程模型、拉普拉斯变换、传递函数模型的理论、推导及仿真
matlab·simulink·传递函数·控制系统·拉普拉斯·电机模型
lingchen19061 天前
用MATLAB r2010b和r2016b求解微分方程组
开发语言·算法·matlab
可编程芯片开发1 天前
基于李雅普诺夫算法的四旋翼无人机姿态跟踪控制系统simulink建模与仿真
matlab·无人机·制造·四旋翼无人机·李雅普诺夫·姿态跟踪控制
matlab代码3 天前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
吃好睡好便好3 天前
转换函数的使用
学习·matlab·生活·转换函数
2501_929807254 天前
考研初试专业课140+总分400+重庆邮电大学801信号与系统考研经验重邮,电子信息与通信工程,真题,大纲,参考书,博睿泽信息通信Jenny。
考研·信息与通信·信号处理·通信·电子信息
吃好睡好便好4 天前
取整函数的使用
学习·matlab·生活·取整函数