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 度

计算结果和图片匹配

相关推荐
彬鸿科技4 小时前
bhSDR Studio/Matlab入门指南(十一):AI数据集采集实验界面全解析
人工智能·matlab·软件定义无线电
yuan199979 小时前
基于 MATLAB PSO 工具箱的函数寻优算法
开发语言·算法·matlab
wearegogog12311 小时前
基于MATLAB实现雷达RCS Swerling模型
开发语言·matlab
强盛机器学习~13 小时前
2026热门方向!基于强化学习的多无人机移动边缘计算与路径规划研究(完整代码&数据)
人工智能·matlab·无人机·边缘计算·强化学习·无人机路径规划
nwsuaf_huasir14 小时前
哈工大latex模板学位论文参考文献引用方法
matlab
机器学习之心17 小时前
BiLSTM-BP加权组合模型回归预测:MATLAB实现与三模型对比分析
matlab·回归·bilstm-bp
吃好睡好便好1 天前
矩阵的乘法运算
数据结构·人工智能·学习·线性代数·算法·matlab·矩阵
listhi5202 天前
基于MATLAB的自适应粒子群算法(APSO)实现大规模分类特征选择
算法·matlab·分类
可编程芯片开发2 天前
基于PSO粒子群优化的配电网可靠性指标matlab仿真
matlab·pso粒子群优化·配电网可靠性
yu85939582 天前
基于MATLAB的层合板等效模量及极限强度计算实现
开发语言·matlab