如何使用matlab进行电路分析?

电器工程 matlab
2022-01-25 21:16:39

我经常听说有人使用 Matlab 进行电路分析,但我从未真正弄清楚它是如何完成的。我认为除了手动设置方程并在 Matlab 中求解它们之外,还有更多的东西。

我正在寻找一个好的起点。

4个回答

我经常使用 MATLAB 进行电路分析。有时我更喜欢它而不是香料,有时我更喜欢香料,这取决于我的心情和要求。

这些是以下步骤:

  • 1:取电路的拉普拉斯变换
  • 2:获取传递函数
  • 3:使用 MATLAB 函数绘图/分析。预兆、脉冲、频率响应等。

我发现最棘手的部分是采用拉普拉斯变换并推导出您的传递函数方程。

网上有很多关于拉普拉斯的例子和教科书。简而言之,这里的目的是得到方程的形式

$$H(s) = \dfrac{as^2 + bs + c } {ds^2 + es + f} $$

其中 \$a\$ 到 \$c\$ 是分子,\$d\$ 到 \$f\$ 是下面示例中的分母。

为此,您可以将所有无源元件转换为复阻抗。那是

  • C = 1/sC
  • R = R
  • L = sL

接下来以 Vout/Vin 的形式为您的电路推导出一个方程。

对于以下形式的简单低通滤波器:

Vin -------R-------------- Vout
               |
               C
               |
------------------------------

这将产生:

\$ \dfrac{V_{out}}{V_{in}} = \dfrac{sC}{R + sC}\$

将上面的方程写成 num 和 den 的形式用于 MATLAB:

num = [C 0];
den = [C R];

然后继续使用任何你喜欢的matlab函数来分析传递函数(波特)、零极点图等。

下面是我最近使用并尝试调整值的过滤器示例:

R1 = 20e3;
C1 = 235e-9;
R2 = 2e3;
C2 = 22e-9;
num = [2*R2*C1 0];
den = [C1*R1*C2*R2*2 (2*C1*R1 + C2*2*R2) 2];
g = tf(num,den);
P = bodeoptions; % Set phase visiblity to off and frequency units to Hz in options
P.FreqUnits = 'Hz'; % Create plot with the options specified by P
bode(g,P);
%[num,den] = eqtflength(num,den);      % Make lengths equal
%[z,p,k] = tf2zp(num,den)          % Obtain zero-pole-gain form

您可以使用 Matlab Simulink Simpowersystem工具箱进行电路分析。它包括 RLC 组件、开关、电机等。您可以创建自己的组件并修改库组件的任何参数。由于您可以将您的电路与任何 Simulink 模块、任何 Simulink 求解器或任何 Matlab 函数相结合,因此该工具非常强大。无需先求解电路方程,因为您在 Simulink 环境中工作。它最初是面向电力系统的,但我认为你可以将它用于任何电子电路。

我有一段时间使用scipy(python 的数字工具集)进行电路分析。是的,这通常涉及首先手动求解电路方程。这在对电路进行容差分析和灵敏度分析时非常有用。

有一本书主题为“使用 MATLAB 进行电子电路的容差分析”,其中提供了一些示例,说明如何对一些常见电路进行典型分析。它并不能真正替代 SPICE 之类的东西,但在尝试在所有组件公差范围内实现良好的生产良率或考虑组件随时间和温度的漂移时很有用。

对于具有任何拓扑(串联和并联)的简单 RLC 电路,我们可以使用“rlcdemo”。这是分析过滤器的好 gui (LPF-HPF-BPF-BSF)

 rlcdemo
 Analyzing the Response of an RLC Circuit
 This demo shows how to use the Control System Toolbox(TM) functions
 to analyze the time and frequency responses of common RLC circuits
 as a function of their physical parameters.