0 引言
MATLAB是“矩阵实验室”(MATRIX LAB-ORATORY)的缩写,由美国MATHWORKS公司推出的一种以矩阵运算为基础的交互式程序设计语言和科学计算软件,适用于工程应用和教学研究等领域的分析设计与复杂计算。与其它计算机语言相比,它具有语句简洁,编程效率高,强大而简易的绘图功能,有效方便的矩阵和数组运算,尤其是扩充能力强。正因为这些特点,MATLAB已成为教学研究与工程应用的不可缺少的助手,自推出后即流行于欧美。MATLAB是基于矩阵运算的,其基本数据结构是矩阵,也就是说:其变量与常量都是矩阵(标量可看作1×N 的矩阵,向量可看作是1×N 或N×1 的矩阵),其元素可以是复数或任意形成的达式。MATLAB是将复数看作一个整体处理的,即不区分实部和虚部,而且还具有元素群运算能力。由于这些特点,它有利于分析计算电路的各种问题,主要包括:直流电阻电路分析;正弦稳态分析;动态电路分析和二端口网络等。分析电路主要是求解电路各支路的电压、电流等,具体步骤是先建立适当的数学模型,然后通过MATLAB软件编程求解,并且编程相比其他高级语言更简便;电路越复杂,效率越高。
1 基于MATLAB的电路分析
1.1 直流电阻电路及正弦稳态分析
具体分析按以下几个步骤来实现:(1)建立数学模型。根据所给电路建立适当的数学模型,对直流电阻电路和正弦稳态交流电路,可以用同一数学模型,因为MATLAB的基本元素是复数,其数学模型实际上就是电路教材中的网孔电流方程和节点电压方程的矩阵形式。例如:三变量的网孔电流方程为:
因为MATLAB中的变量是复数,所以以上的电流和电压变量上方没有加点。
其矩阵形式为:Z ×I=Us
(2)编程。由MATLAB的语句构成的程序文件叫M文件,它是以“.M”作为文件扩展名的文本文件,可以直接阅读并可由任何文本编辑器建立。调用M文件输入电路元件参数并运行程序后即可得到结果。实际上该程序的编写相当简单,只要有电路和程序设计的基础知识即可,且程序不长。为了简化编程,亦可直接利用MATLAB的交互命令,输入电路元件参数后也可得到结果。
(3)例题分析。
例题1:如图1所示,已知R1=R2=R3=4Ω,R4=2Ω,IS =2A,α=0.5,β=4,求I1 和I2。
图1
解:①建模。按图1,建立节点电压方程:
(1/R1+1/R2)Un1 + (-1/R2)Un2 = IS+αI2
(-1/R2) Un1 + (1/R1+1/R2+1/R3) Un2 = -αI2+βI1/R3
I1 = (Un1 -Un2 )/ R2
I2 = Un2/R4
整理以上各式并写成矩阵形式:
②编程。利用MATLAB编写的程序如下:
clear,format compact
%输入元件参数值
R1=4;R2=4;R3=4;R4=2;
Is=2;α=0.5;β=4;
%按Z×X=Y 列写电路的矩阵方程,其中:
X= [U1;U2;I1;I2]
z11=1/R1+1/R2;z12= -1/R2;z13= 0;z14= -α;
z21= -1/R2;z22= 1/R2+1/R3+1/R4;z23= -β/R3;
z24=α;
z31= 1/R2;z32= -1/R2;z33= -1;z34= 0;
z41= 0;z42= 1/R4;z43= 0;z44= -1;
%以上设置系数矩阵X的元素
Z= [z11, z12, z13, z14;z21, z22, z23, z24;z31, z32, z33, z34;
z41, z42, z43, z44];
Y= [Is;0;0;0];
X=Z \Y ; %求解结果
I1=X (3),I2= X (4);
I1 , I2 %输出结果
运行程序得:I1= 1,I2= 2 即正确答案为:
I1= 1A, I2= 2A
例题2:图2电路中L1=3.6H,L2=0.06H,M=0.465H,R1=20Ω,R2=0.08Ω,RL= 42Ω,Us=115COS(314t)V,求电流I1, I2。
图2
解:①建模。如图2,建立网孔电流方程:
(R1+jwL1)I1 + jwMI2 = US
jwMI1 + (R2+jwL2+RL)I2= 0
写成矩阵形式:
②利用MATLAB编程:
clear,format compact
% 输入元件参数值
R1=20;R2=0.08;RL=42;L1=3.6 ;L2=0.06;
M =0. 4650;w=10 * pi ;Us=115;
% 按Z * X=Y 列写电路的矩阵方程,其中
X=[I1; I2]
z11=R1+j * w * L1;z12=j * w * M;
z21=j * w * M;z 22=R2+j * w * L2+R L;
%以上设置系数矩阵X的元素
Z=[z11 , z12 ; z21 , z22];Y=[Us ; 0];
X=Z \Y ; %求解结果
I1=X(1);I2=X(2);
I1,I2 ,%输出结果
r1=abs (I1), angl e1=[angl e (I1 ) * 180]/pi,
r2=abs (I2), angl e2=[angl e (I2 ) * 180]/pi
运行程序得:I1 =0.0470 - 0.1000 ,
I2 = -0.3501 - 0.0063I;
r1 = 0.1105,angl e1 = -64.8385;
r2 = 0.3502,angl e2 = -178.9683
上式中r1, r2分别代表电流I1,I2的模,angl e1,
angl e2分别代表电流I1,I2的辐角。
1.2 动态电路分析
描述动态电路是用微分方程,一阶动态电路是一阶微分方程来描述的,可以直接求解微分方程,但也可以应用三要素法求解。当应用三要素法求解时,电路的全
响应=零输入响应+零状态响应,或者电路的全响应=稳态响应+暂态响应,用公式表示为:
f ( t)= [f (∞)-f (0+)]exp(-t /τ)+ f (∞),该式作为其数学模型。二阶动态电路用二阶微分方程来描述,要应用拉氏变换来建立S域的数学模型。例3 :如图3所示电路,已知R=2Ω,C=0.5F,电容初始电压Uc (0+)=4V,激励为正弦电压US (t)=8cos4t,当t=0时,开关S闭合,求电容电压的全部
响应,并绘出波形图。
解:①建模。当t≥0时,表征电容电压的微分
方程为:
d U c /d t+U c /RC=US /RC
若用三要素法求解,其解为:
Uc(t)=Uc(∞) +[Uc(0+)-Uc(∞)] exp(- t/τ)
式中,Uc(0)为电容的初始电压,Uc(∞)为电容的稳
态值,τ为时间常数。
但由于激励为正弦电
压,上述公式适当修改
为:
Uc(t)=Ucp(t) + [Uc(0+)
- Ucp(0+)] exp(-t /τ)
式中,Ucp(t)为电容的稳态值, 它应是和电源同频率
的正弦电压,只是其幅值和相位不同,记为Ucp(t)=
Ucpm * cos(t +θ), U cp(0+)为 0+时刻的Ucp(t)值,
即Ucp(0+)=Ucpm * cos(θ)。
②编程。
clear all
R=2; C= 0.5;T =R * C; Uc0=4;%输入元件参数
Usm=8; w=4; Zc=1/(j * w * C);
t=0:0.1:10;
Us=Usm * cos(w * t);%输入激励信号
Ucp=Us * Zc/(R+Zc);%计算稳态分量
Ucp0=Ucp(1);%计算稳态分量的初始值
Uct=[Uc0-Ucp0 ] * exp(-t/T);%计算暂态分量
Uc=Uct+Ucp;%计算电路的全响应
plot (t ,Uc,'-g',t,Uct,'+r',t,Ucp,' * b' ),grid%绘制
稳态分量,暂态分量,全响应的波形图(如图4)
legend('Uc','Uct','Ucp')%波形注释
运行程序,得到仿真结果:
Uc:电路的全响应
Uct:电路的暂态分量
Ucp:电路的稳态分量
2 小结
电路分析的基本方法是建立数学模型(一般是方程或者已知电路方程组),并求解方程组,得到各支路电压和电流。当电路规模较大时,求解很复杂,借助计算机可以大大简化计算量,以前有FORTRAN和BASIC语言编写的程序,但一般程序
较大,较复杂,而利用MATLAB则要简单得多,而且还可以进行仿真,除编写专用程序外,可以建立通用的电路分析程序。以上三个题例,均是采用编程的方式,其实也可以用MATLAB的命令方式求解,这样更简单。
参考文献:
[1] 邱关源.电路(第四版)[M].北京:高等教育出版社,1999.
[2] 陈怀琛等.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社,2002.