MATLAB应用笔记(1、LCR电路仿真)

LCR电路仿真

matlab 复制代码
clear; close all; clc;

1 微分方程

首先写出此电路的微分方程

电流从正极流向负极,根据各元件的特性,电压分别为:

{电感电压:eL(t)=Ldi(t)dt电容电压:eC(t)=1C∫0ti(t)dt电阻电压:eR(t)=i(t)R \left\lbrace \begin{array}{l} 电感电压:e_L (t)=L\frac{di(t)}{dt}\newline 电容电压:e_C (t)=\frac{1}{C}\int_0^t i(t)dt\newline 电阻电压:e_R (t)=i(t)R \end{array}\right. ⎩ ⎨ ⎧电感电压:eL(t)=Ldtdi(t)电容电压:eC(t)=C1∫0ti(t)dt电阻电压:eR(t)=i(t)R

根据基尔霍夫电压定律可得:

eL(t)+eC(t)+eR(t)−e(t)=0 e_L (t)+e_C (t)+e_R (t)-e(t)=0 eL(t)+eC(t)+eR(t)−e(t)=0

带入得到:

Ldi(t)dt+frac1c∫0ti(t)dt+i(t)R−e(t)=0 L\frac{di(t)}{dt}+frac1c\int_0^t i(t)dt+i(t)R-e(t)=0 Ldtdi(t)+frac1c∫0ti(t)dt+i(t)R−e(t)=0

对两边同时求导得到:

de(t)dt=Ld2i(t)dt2+Rdi(t)dt+1Ci(t) \frac{de(t)}{dt}=L\frac{d^2 i(t)}{dt^2 }+R\frac{di(t)}{dt}+\frac{1}{C}i(t) dtde(t)=Ldt2d2i(t)+Rdtdi(t)+C1i(t)

2 传递函数

假设L=5H,R=6Ω,C=7F,可得:

de(t)dt=5d2i(t)dt2+6di(t)dt+17i(t)H(s)=s5s2+6s+0.142857 \begin{array}{l} \frac{de(t)}{dt}=5\frac{d^2 i(t)}{dt^2 }+6\frac{di(t)}{dt}+\frac{1}{7}i(t)\newline H(s)=\frac{s}{5s^2 +6s+0.142857} \end{array} dtde(t)=5dt2d2i(t)+6dtdi(t)+71i(t)H(s)=5s2+6s+0.142857s

使用tf函数创建此传递函数的模型:

den:分母系数向量(按s的降幂排列)

matlab 复制代码
den = [5 6 1/7];

num:分子系数向量(按是的降幂排列)

matlab 复制代码
num = [1 0];
sys_tf = tf(num, den);

3 系统特性

3.1 阶跃响应

输入1V恒定电压时,系统的输出

matlab 复制代码
step(sys_tf);
% 添加网格和标题,让图形更清晰
grid on;
title('RLC电路电流i(t)的单位阶跃响应');
xlabel('时间 (秒)');
ylabel('电流 i(t)');
% 计算时域指标
info = stepinfo(sys_tf);  
disp(info);   % 显示上升时间、超调量、调节时间等
matlabTextOutput 复制代码
         RiseTime: 0
    TransientTime: 165.2061
     SettlingTime: NaN
      SettlingMin: 0
      SettlingMax: 0.1567
        Overshoot: Inf
       Undershoot: Inf
             Peak: 0.1567
         PeakTime: 3.3686

3.2 波特图

matlab 复制代码
%波特图
bode(sys_tf);

3.3 零点和极点

matlab 复制代码
% 求极点,使分母为0
pole(sys_tf)
matlabTextOutput 复制代码
ans = 2x1
   -1.1757
   -0.0243
matlab 复制代码
% 求零点,使分子为0
tzero(sys_tf)
matlabTextOutput 复制代码
ans = 0

3.4 根轨迹图

matlab 复制代码
rlocus(sys_tf)

4 仿真

生成输入信号(正弦波电压)

matlab 复制代码
f = 0.027;                          % 频率 (Hz)
t = 0:0.01:500;                     % 时间向量,0~100秒,步长0.05秒
w = 2*pi*f;
E_amp = 1;
u = E_amp * sin(w * t);             % 输入电压 e(t)

用lsim仿真输出电流

matlab 复制代码
[y, t_out] = lsim(sys_tf, u, t);  % y 就是电流 i(t)

绘制电压和电流

matlab 复制代码
figure;
plot(t_out, u, 'b-', 'LineWidth', 1); hold on;
plot(t_out, y, 'r-', 'LineWidth', 1);
grid on;
xlabel('时间 (秒)');
ylabel('幅值');
title(['正弦激励响应 (f = ' num2str(f) ' Hz)']);
legend('输入电压 e(t) (V)', '输出电流 i(t) (A)', 'Location', 'best');

观察上图,输入0.027Hz正旋波时,电压和电流相位基本相同

matlab 复制代码
w = 2 * pi * f;
[mag, phase, wout] = bode(sys_tf, w);


% 输出结果
fprintf('频率 f = %.2f Hz (ω = %.4f rad/s)\n', f, w);
matlabTextOutput 复制代码
频率 f = 0.03 Hz (ω = 0.1696 rad/s)
matlab 复制代码
fprintf('幅值 mag = %.4f (线性)\n', mag);
matlabTextOutput 复制代码
幅值 mag = 0.1667 (线性)
matlab 复制代码
fprintf('相位 phase = %.2f 度\n', phase);
matlabTextOutput 复制代码
相位 phase = -0.06 度

计算结果和图片匹配

相关推荐
88号技师2 小时前
2026年4月中科院一区SCI-灰叶猴优化算法Gray langurs optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
2zcode14 小时前
基于MATLAB的CNN和SVM苹果质量智能检测与分级系统研究
支持向量机·matlab·cnn
IT猿手17 小时前
光伏模型参数估计:基于山羊优化算法(GOA )的光伏模型参数辨识问题求解研究,免费提供完整MATLAB代码链接
开发语言·算法·matlab·群智能优化算法·智能优化算法·光伏模型参数估计·光伏模型参数辨识
机器学习之心19 小时前
基于实数编码遗传算法的订单驱动市场最优交易路径规划,MATLAB代码
matlab·最优交易路径规划·实数编码遗传算法
guygg881 天前
四旋翼无人机串级PID控制MATLAB仿真
开发语言·matlab·无人机
guygg881 天前
四足液压机器人设计程序MATLAB实现
开发语言·matlab·机器人
feifeigo1231 天前
图像重建中软阈值方法的原理和MATLAB实现
开发语言·matlab
88号技师1 天前
2026年2月新锐一区SCI-完整家庭互动优化算法Undivided Family Interaction Algorithm-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
简简单单做算法1 天前
基于GWO灰狼优化的Transformer-BiLSTM网络模型的时间序列预测算法matlab性能仿真
matlab·transformer·时间序列预测·bilstm·gwo灰狼优化