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 度

计算结果和图片匹配

相关推荐
xiao5kou4chang6kai43 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
bubiyoushang8884 天前
电力线信道“五类噪声”仿真MATLAB
开发语言·matlab
cici158744 天前
彩色图像模糊增强(Fuzzy Enhancement)MATLAB 实现
开发语言·算法·matlab
kaikaile19954 天前
图像稀疏化分解 + 压缩感知(CS)重建 MATLAB
开发语言·计算机视觉·matlab
yugi9878384 天前
PNCC(Power-Normalized Cepstral Coefficients)— MATLAB 实现
开发语言·人工智能·matlab
cooldog123pp4 天前
cplex完全安装手册,适配matlab和python!
人工智能·python·matlab·cplex
2zcode4 天前
项目文档:基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别
天疆说4 天前
在 Ubuntu 24.04 上安装 MATLAB R2021b
数据库·ubuntu·matlab
guygg884 天前
二维弹塑性有限元分析(von Mises 等向硬化)— MATLAB 实现
开发语言·人工智能·matlab
天疆说4 天前
在 Ubuntu 的 VSCode 中配置 MATLAB
vscode·ubuntu·matlab