MATLAB电路仿真
(3) 编写MATLAB 仿真程序或建立Simulink 模块方框图, 调试并运行程序。
(4)得出数值解,即仿真结果,对仿真结果进行分析,以 确定结果的可靠性和有效性。
20:24 5
第5周 MATLAB电路仿真
R + f(t ) -
L
i L(t ) + C u C(t ) -
图2-2 一个二阶电路系统
function in=f(t) %输入信号
in=(t>0)*1;%阶跃信号
20:24
10
第5周 MATLAB电路仿真 然后,利用 MATLAB 提供的求解微分方程的指令对 该微分方程组求解。 MATLAB 提供的求解微分方程的算 法有多个,如“ode45”、“ode23” 、“ ode15s” 等,不同 的算法适用的场合稍有不同。例如,通过“ ode45” 函数 求解,MATLAB程序(程序名为ex123.m)如下: 程序2-4 %filename ex123.m L=1;%电感值
%矩阵初始化
xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);%方程1 xdot(2)=1/C*x(1);%方程2
function in=f(t)%输入信号
in=(t>0)*1;%信号阶跃 而ex123.m的“ode45”语句中仍然将系统状态改为[0,1]。 20:24 18 运行后得到的波形仿真结果如图 2-5所示。
20:24 15
第5周 MATLAB电路仿真 text(0.9,0.07,′\leftarrowi-L(t)′);grid; figure(2);plot(t,x(:,2));holdon;xlabel(′timesec′);
text(0.5,0.3,′\leftarrowu-C(t)′);grid;
波形进行仿真求解。
20:24 7
第5周 MATLAB电路仿真 [解] (1)设电感电流为iL(t) ,电容电压为uC(t) ,根据电 路,列出KVL方程:
d RiL (t ) L iL (t ) uC (t ) f (t ) dt C d uC (t ) iL (t ) dt
C=0.1;%电容值
for R=[1.5 3 5]%仿真电阻值分别为1.5,3,5欧姆的情况 [t,x]=ode45(′funcforex123′,[-1,10],[0;0],
20:24
[],R,L,C);
11
第5周 MATLAB电路仿真 %也可采用ode23,ode15s等求解 figure(1);plot(t,x(:,1));holdon;xlabel(′timesec′);
end 然后运行,得到的波形仿真结果如图2-4所示。
20:24
16
第5周 MATLAB电路仿真
20:24
图2-4电感电流、电容电压零输入响应波形仿真结果 (a)电感电流零输入响应波形仿真结果; (b)电容电压零输入响应波形仿真结果
17
第5周 MATLAB电路仿真 ( 3) 对 于 全 响 应 情 况 , 可 相 应 修 改 MATLAB 函 数 funcforex123.m如下: 程序2-7 functionxdot=funcforex123(t,x,flag,R,L,C) xdot=zeros(2,1);
text(0.9,0.17,′\leftarrowi-L(t)′);grid;
figure(n;xlabel(′timesec′); text(0.5,0.3,′\leftarrowu-C(t)′);grid; end 运行程序后,得到的电感电流、电容电压波形仿
第5周 MATLAB电路仿真
第5周 MATLAB电路仿真
5.1 MATLAB 5.2 MATLAB编程电路仿真
5.3 Simulink电路仿真
20:24
1
第5周 MATLAB电路仿真
2.2 MATLAB编程仿真
2.2.1 时间连续信号与系统的计算机仿真问题
时间连续的确定信号在物理上是一个随时间变化的 (电压或电流)波形,在数学上表示为一个时间连续的 函数f(t)。时间连续信号也称为模拟信号。而时间离散的 确定信号在数学上可以表示为一个确定的序列{fn}。如果 以满足取样定理的取样速率对时间连续函数f(t)进行取 样,就可以得到对应的时间离散序列{fn},而将时间离散 序列{fn}通过取样定理所规定的理想低通滤波器后,就能 够恢复连续信号f(t)。
for R=[1.5 3 5]%仿真电阻值分别为1.5,3,5欧姆的情况 [t,x]=ode45(′funcforex123′,[-1,10],[0;1],
[],R,L,C);
%也可采用ode23,ode15s等求解 figure(1);plot(t,x(:,1));holdon;xlabel(′timesec′);
20:24 20
第5周 MATLAB电路仿真 对于任何电子电路,都可以根据电路理论的知识 得出其数学模型,即一阶微分方程组,也称为状态方程。 接下来以MATLAB所规定的格式编写状态方程的描述 函数,然后选择合适的求解方式求解,也就完成了对 电路的仿真。最后,对所得出的仿真波形进行分析。 需要强调的是,微分方程的 MATLAB 函数格式是 固定的,必须按MATLAB所规定的格式来编写。本例 中,需要将方程参数“ R;L;C” 传入。传入参数前的标 志变量“flag”是必需的,以符合求解函数“ ode45” 的 要求。微分方程的MATLAB函数引导语句的格式为 function xdot=方程函数名(t,x,flag,附加参数)
20:24 9
第5周 MATLAB电路仿真 按照 MATLAB 的固定写法,编写出该微分方程组 的MATLAB函数(函数文件名为funcforex123.m)如下: 程序2-3 function xdot=funcforex123(t,x,flag,R,L,C) xdot=zeros(2,1);%矩阵初始化 xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);%方程1 xdot(2)=1/C*x(1);%方程2
function in=f(t) %输入信号
in=0; %信号始终为零
20:24
14
第5周 MATLAB电路仿真 并修改 ex123.m 的“ ode45” 语句,将系统状态改为 [0 , 1],程序如下: 程序2-6 %filenameex123.m L=1;%电感值
C=0.1;%电容值
一一对应关系。
20:24
3
第5周 MATLAB电路仿真 连续系统可以用微分方程来描述,离散系统可以 用差分方程来描述。当系统为无记忆系统时,微分方 程或差分方程退化为代数方程。因此,对系统进行仿 真的过程就数学意义而言,就是求解这些微分方程、 差分方程或代数方程的过程。
为了对连续系统进行仿真,首先需要建立其数学 模型,然后利用计算机求解这些数学模型,从而得出 数学模型的数值解。计算机对数学模型的求解过程就 是对系统的仿真过程。由于连续系统是通过微分方程 来建模的,因此对此的计算机仿真本质上就是微分方 程的数值求解问题。通常,对连续系统进行计算机仿 真的过程是:
R 1 1 1 x1 x2 f x L L L 1 x 2 x1 C
(2-3)
写出该微分方程的 MATLAB 函数。注意,这一组
微分方程组就是该二阶电路的状态方程,对于同一个物
理系统,如果选取的状态变量不同,所得到的状态方程 也就不同,但都表达了该物理系统的状态信息。
20:24 21
第5周 MATLAB电路仿真
图2-5电感电流、电容电压全响应波形仿真结果 (a)电感电流全响应波形仿真结果; (b)电容电压全响应波形仿真结果
20:24 19
第5周 MATLAB电路仿真 由此可见,一旦从物理系统中建立了其数学模型, 也即得出系统的微分方程描述之后,给定其边界条件, 就可得出其数值解,求解的过程就是仿真的过程。在 MATLAB 中,我们可以方便地修改微分方程函数以及 求解指令的参数,从而得出系统的零输入响应、零状 态响应以及全响应等各种状态下的输出信号。可以将 这个例子中的输入信号修改为一个宽度为0.3s的矩形脉 冲,然后观察其响应波形。(提示:只需修改 funcforex123.m 中 语 句 “ in=(t>0)*1;” 为 “ in=(t>0)*1(t>0.3)*1;”即可。) 本例演示了对于一个动态电路瞬态响应的仿真过 程。仿真的关键在于建立正确的数学模型。
20:24 6
第5周 MATLAB电路仿真 对 于 一 个 二 阶 系 统 , 电 路 如 图 2-2 所 示 , 试 利 用 MATLAB编程仿真求解: (1) 零状态响应:系统在 t=-1秒时刻的初状态为零 ,输入 信号为阶跃信号 f(t)=u(t) ,输出为电容电压,试对时间 t=[1,10]秒的输出信号波形进行仿真求解。
真结果如图2-3(a)、(b)所示。
20:24
12
第5周 MATLAB电路仿真
图2-3电感电流、电容电压零状态响应波形仿真结果 (a)电感电流单位阶跃响应(零状态响应)波形仿真结果; (b)电容电压单位阶跃响应(零状态响应)波形仿真结果
20:24 13
第5周 MATLAB电路仿真 (2)当t=-1秒时刻信号输入二端闭合,相当于输入 信号为零,因此修改MATLAB函数funcforex123.m如下: 程序2-5 function xdot=funcforex123(t,x,flag,R,L,C) xdot=zeros(2,1);%矩阵初始化 xdot(1)=-R/L*x(1)-1/L*x(2)+1/L*f(t);%方程1 xdot(2)=1/C*x(1);%方程2
改写为标准形式:
(2-2)
R 1 1 d iL (t ) iL(t ) uC (t ) f (t ) dt L L L d u (t ) 1 i (t ) C L dt C