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 度

计算结果和图片匹配

相关推荐
机器学习之心1 小时前
LSTM神经网络+SHAP可解释性分析+NSGA-II工艺参数优化,从预测到可解释性再到多目标优化的全流程实战,MATLAB代码
神经网络·matlab·lstm·shap可解释性分析·nsga-ii工艺参数优化
Logintern0919 小时前
[Matlab] 遗传算法求解TSP入门
开发语言·matlab
我爱C编程19 小时前
基于BP译码和用户RMA解码的LT码实现及度分布设计matlab实现和误码仿真
matlab·bp译码·rma解码·lt码·度分布
民乐团扒谱机2 天前
【微实验】物理启发神经网络(PINN):当AI学会遵守物理定律(附matlab代码))
人工智能·神经网络·matlab
NoteStream2 天前
MATLAB绘制带置信区间的折线散点图(科研绘图模板)
开发语言·matlab
简简单单做算法2 天前
基于遗传算法和贝叶斯联合优化的BiLSTM(GA-BO-BiLSTM)一维时间序列预测算法matlab仿真
matlab·一维时间序列预测·ga-bo-bilstm·遗传和贝叶斯联合优化
机器学习之心2 天前
MATLAB 实战复盘:集合覆盖模型 + 线性加权和法,搞定应急物流中心选址
matlab·集合覆盖模型·线性加权和法·应急物流中心选址
程高兴3 天前
三相两电平光伏MPPT定步长扰动观察法Simulink
matlab
CAE3203 天前
BPM-Matlab光束传播法光学仿真
matlab·bpm·光束传播法
Evand J4 天前
【MATLAB例程,车联网8】MPC网联车辆节能跟驰控制:速度跟踪、间距约束与能耗优化。附MATLAB完整代码的下载链接
开发语言·matlab·车联网·调度·mpc·节能·车辆控制