MATLAB电路仿真
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(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
20:24 8
第5周 MATLAB电路仿真 令电路的状态变量iL(t)=x1(t),uC(t)=x2(t),输入信号 为f(t),则微分方程简写为
20:24 4
第5周 MATLAB电路仿真 (1) 建立数学模型:就是将物理模型转换为数学模型的过 程。对于电子电路而言,就是利用电路的拓扑、元件的属性, 列出网孔方程或节点方程,并简化为标准形式的计算机可求 解的一阶微分方程组(即状态方程)的过程。对于线性时不 变系统来说,就是建立其传递函数模型,并简化为计算机易 于求解的线性一阶微分方程组(即状态方程)的过程。而对 于一般的系统,通常可建模为一组非线性的微分方程组。 (2) 选择适合的计算机求解方法求解仿真模型。不同的微 分方程求解算法的精度和适用范围均有所不同。
20:24 2
第5周 MATLAB电路仿真 换句话说,在满足取样定理的前提下,f(t) 与{fn} 是一一对应的关系。对时间离散序列{fn}进行幅度值上
的离散化(这个过程称为量化)就得到了数字信号{ }。 ~ fn 数字信号通常以二进制编码的形式存储在计算机中。
因此,利用计算机所表达的时间连续信号f(t)实质上是 ~ 其所对应的数字信号{ }。本质上,计算机不能直接处 fn 理模拟信号,计算机中的信号处理均是对数字信号的 处理。而由取样定理保证了它与模拟信号处理之间的
(2) 零输入响应:系统在t=-1秒时刻电容电压为uC=1V,
当t=-1秒时刻信号输入二端闭合,试对时间t=[-1,10] 秒的输出信号波形进行仿真求解。 (3)全响应:系统在t=-1秒时刻电容电压为uC=1V,输入 信号为阶跃信号 f(t)=u(t) ,试对时间 t=[-1,10] 秒的输出信号