1、常熟理工学院课程设计报告目录第一章:绪论21.1 课题目的及意义21.2 课题的社会和技术背景31.3实现的具体功能3第二章:课题基本概念和原理52.1基本概念52.2基本原理52.2.1利用KCL,KVL求解52.2.2支路电流法62.2.3网孔电流法7第三章:系统设计和实现93.1采用软件及开发平台93.2系统详细设计103.2.1例1. 简单的正弦稳态电路103.2.2例2.用支路电流法和节点电压法求解电路113.2.3例3.用网孔电流法求解电路133.2.4例4.正弦稳态电路:仪表读数问题143.2.5主要技术问题与解决方法153.3系统设计的亮点与创新点16第四章:结束语17第五章:
2、参考文献19第六章:附录203.2.2用支路电流法和节点电压法求解电路源代码203.2.3用网孔电流法求解电路源代码213.2.4正弦稳态电路:仪表读数问题源代码21第一章:绪论1.1 课题目的及意义目的:了解MATLAB在现代科学研究的地位,了解区别与面向过程的计算机语言和面向问题的计算机语言。了解MATLAB解决复杂科学问题的高效率和覆盖面广泛的优势要求能够利用MATLAB的帮助系统进行知识点的搜索,这是掌握科学计算软件的最基本最有效的方法。MATLAB计算的对象是数据,不同的问题的数据有不同的数据结构。MATLAB提供了具有复杂数据结构的数组,用于解决不同的实际问题。本章系统介绍数据数组
3、、字符数组、元胞数组和构架数组,这些数组的创建、数组元素的定位、数组的合并和扩充、数组的操作等等。MATLAB图形是一系列图形元素组成的构架数组,对给定的数据能够熟练的作图,并能对图形进行各种修饰,了解立体图形的颜色对应颜色矩阵,了解立体图形的视角、光线、材质等立体图形的修饰命令。了解并能绘制特殊图形的方法,如统计图形等。掌握各类数学模型的基本数值计算问题,内容覆盖数学学科的大部分分支,掌握基本的数学模型的数值求解方法和MATLAB命令。意义:MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实
4、时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。当前流行的MATLAB5.3/Simulink3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。 开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修
5、改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。重点解决问题:MATLAB的基本使用方法,MATLAB的预定义函数,如何用MATLAB绘图,如何在MATLAB中编程,基于MATLAB的矩阵运算、符号运算、数值分析等。1.2 课题的社会和技术背景在70年代中期,CleveMoler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平。 到70年代后期,身为美国NewMexico大学计算机系系主任的
6、CleveMoler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序。CleveMoler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合。在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。1983年春天,CleveMoler到Standford大学讲学,MATLAB深深地吸引了工程师JohnLittle.John
7、Little敏锐地觉察到MATLAB在工程领域的广阔前景。同年,他和CleveMoler,SteveBangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能。 1984年,CleveMoler和JohnLittle成立了MathWorks公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。 在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发
8、学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB一定会盛行起来。可以
9、说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。1.3实现的具体功能MATLAB实现了全新的开发环境;在命令窗口增加了错误跟踪功能;提供了许多新的数值处理功能;在图形窗口增加了曲线拟合、数据统计等交互工具;引入了类与对象及函数句柄等概念;改进了编辑/调试器的界面及功能; 属性编辑器功能更强,使用更方便;建立了一个与以前完全不同的图形用户界面(GUI)图形窗口;增加了虚拟现实工具箱;在应用程序接口方面增加了与Java的接口,并为二者的数据交换提供了相应的程序库。本实验主要实现了正弦稳态电路的研究,解决了正弦稳态电路的实例分析与计算。 第二章:课题基本概念和原理2.1基本概念
10、MATLAB和Mathemat、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,
11、JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。本实验主要是应用MATLAB解决正弦稳态电路的问题,主要用的研究方法是戴维宁定理,叠加法,节点电压法,网孔电流法。2.2基本原理基本原理就是应用电路所学方法应用到MATL
12、AB中,去利用MATLAB软件解决实际问题。下面主要详细介绍一下支路电流法,回路电流法和节点电位法,另外简单介绍一下戴维宁定理和诺顿定理。2.2.1利用KCL,KVL求解KCL:在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于零。KVL:在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。2.2.2支路电流法例2.2.1.1电路中, ,,求各支路电流并画相量图。图2.2.1.1解:用支路电流法列出方程组:代入数值得:=0.4440 - 2.8080i=-1.8720 + 3.7040i=-0.5720 - 0.8960i=-0.4840 - 1.9120i
13、=1.9120 + 1.0160i2.2.3网孔电流法例2.2.2.1所示,其中,求、,和。图2.2.2.1解:列出方程组:从图1-2可以看出,、为网孔电流,使用网孔电流法,电路方程为:其矩阵形式为其中, ; 。第三章:系统设计和实现3.1采用软件及开发平台该系统设计采用的是MATLAB数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函
14、数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。MATLAB一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特
15、点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C语言基础上的,因此语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。MATLAB将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的科学及工程问题的分析计算和程序设计工具,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能,是具有
16、全部语言功能和特征的新一代软件开发平台。3.2系统详细设计通过设计出的系统可以应用MATLAB进行处理正弦稳态电路,这里的系统就是通过数学建模可以解决一类问题,并能简单详细的将结果显示出来,让读者明白清楚,一目了然。3.2.1例1. 简单的正弦稳态电路如图1所示,已知,求,,和,。并画出相量图。图 1根据图示电路可列出KCL、KVL方程得: I=Ir+Ic Us=ZI Ir=Uc/Z2 Ic=Uc/Z3 U1=Z1*I源代码见附录,将源代码输入到MATLAB中,可以得到下面幅值与相位表,还有一幅相位图(如下图所示)运行结果如下:Ir = 1.7321 + 1.0000iIc =-2.5000
17、+ 4.3301iI =-0.7679 + 5.3301iUl =-15.9904 - 2.3038iUs =-7.3301 + 2.6962i表1 正弦稳态的幅值相位ucIrIcIUlUs幅值10.0000 2.0000 5.0000 5.385216.15557.8102相位30.0000 30.0000 120.0000 98.1986-171.8014159.8056图1 正弦稳态的向量图3.2.2例2.用支路电流法和节点电压法求解电路在图2所示电路中, ,,求各支路电流并画相量图。图 2以支路电流法为例:由图可列出支路电流方程组:源代码见附录,将源代码输入到MATLAB中,可以得到下
18、面幅值与相位表,还有一幅相位图(如下图所示)运行结果如下:I1 =0.4440 - 2.8080iI2 =-1.8720 + 3.7040iI3 =-0.5720 - 0.8960iI4 = -0.4840 - 1.9120i表2 例2的幅值与相位I1I2 I3I4 I5幅值2.844.151.061.972.16相位-81.01116.81-122.55-104.227.98图2 例2的向量图3.2.3例3.用网孔电流法求解电路在图3所示电路中,其中,求、,和。图3 采用网孔电流法列方程组可列网孔电流方程组:源代码见附录,将源代码输入到MATLAB中,可以得到下面幅值与相位表,还有一幅相位图
19、(如下图所示)运行结果如下:i1 =2.4691 + 0.9045ii2 =3.0118 + 2.2515ii3 =1.6550 + 0.2982ii4 = -1.3568 - 1.9533ii5 =-0.5427 - 1.3470i表3 例3的幅值与相位i1i2 i3i4 i5幅值2.623.761.682.371.45相位20.1136.7810.21-124.78-111.94图3 例3 的向量图3.2.4例4.正弦稳态电路:仪表读数问题在如图4所示的电路中,已知,,电压表的读数为10V,电流表的读数为30A。求图中电流表和功率表的读数以及电路的输入阻抗。图4可知: 由已知条件:,可以得
20、输入阻抗=1-1/10000*i/c1+30000*i*l通过计算得到电流表读数为:又由 可求出功率表读数源代码见附录,将源代码输入到MATLAB中,可以得到下面运算结果z = 1-1/10000*i/c1+30000*i*li2 相位:28.2843 幅值:180电流表读数/A: 20功率表读数/W: 1003.2.5主要技术问题与解决方法主要技术问题是将数学表达式转化为MATLAB语句时不是很熟练,在这方面花费了比较多的时间,没有很好的掌握课本内容。还有就是在刚接触的时候有点茫然,是不知所措的感觉,在与几个同学的交流中渐渐明白了其设计思路与设计方法。解决方法先是掌握M函数的编写,弄清程序的
21、入口和出口参数及参数的取值情况,工具箱的应用其实就是一些别人编好的具有特定功能的函数,在掌握M函数的情况下,这个就不在话下了,还是那句话,弄清功能,弄清输出输入参数的情况及相互关系,在写m函数前现在workspace里将主要源码操作一遍,一是可以熟悉各参数间的关系,二是可以验证源码的正确性。3.3系统设计的亮点与创新点友好的工作平台和编程环境;简单易用的程序语言;强大的科学计算机数据处理能力;出色的图形处理功能;应用广泛的模块集合工具箱;实用的程序接口和发布平台;应用软件开发(包括用户界面)。第四章:结束语暑假的MATLAB实训,首先是让我们又接触了一门新的语言,我的理解是通俗来描述就是一部功
22、能更为强大的计算器,它不仅是会计算简单的加减乘除,还会处理各种不同的函数,同时绘制出相应的图形图像。通过基本电路理论中的典型题目介绍了如何应用MATLAB语言编程的方法来对复杂电路进行分析和计算。该方法不仅可以节约计算时间、方便地调试电路参数,而且还可以非常直观地观察和测量电路中的电压、电流和功率等物理量。结论表明,MATLAB提供了高效简洁的编程方法, 其强大而简易的绘图功能、矩阵和数组运算能力以及很强的扩充性,能充分满足基本电路分析、计算的需要,从而可以大大地提高计算精度和工作效率,在电路理论学科研究与工程实践中具有很好的应用价值。MATLAB课程的开设,对于我们光电信息工程的科学研究与工
23、程应用有很大的帮助,通常编制程序是复杂的,不仅消耗人力物力而且影响工作进度与效率。MATLAB很好的克服了这些困难,是一种功能强,效率高便于使用的工具。其中包括:一般数值分析、矩阵运算、数字信号处理、建模和系统优化等应用程序,并集应用程序和图形与一体的使用环境。它的方便更是体现在了相关课程的学习上,信号与系统中最让人头疼的无疑是Fourier变换及其反变换、Laplace变换及其反变换、Z变换及其反变换、卷积计算类等问题,但在Matlab符号变换和卷积功能下,这些难度非比一般的问题将被轻松搞定,简单的一段Matlab语言即可得到想要的结果。编程问题最头疼的不是编程序,而是调程序,所以在你的程序
24、编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。尽量摆脱c编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓,要大胆的去试,试过才知道可不可以,多去编写程序,运行调试。在本次设计中也发现了一些问题。例如,不想输出某一结果,就在本语句后加分号,想要该结果,就可以加上逗号或者什么符号也不加。MATLAB中有许多快捷键可以使用,但还没有掌握。命令窗口和编辑窗口有不同,前者在程序结果时直接按“enter”键就可以看到结果,后者在运行程序后发现错误可以直接改,在作图时要选好间距,否则将看不到完整的波形。MATLAB
25、的课程设计加强了我们独立思考独立解决问题的能力,通过研习课本查阅资料自己慢慢清晰了这次课程设计的设计思路,然后再不断琢磨终于是将一份比较完善的设计报告完成了。相信以后要用到MATLAB的地方也会比较多,我们需要在后面的后续课程中去加深理解,更好的运用的更广的领域。第五章:参考文献1 邱关源. 电路M. 第五版:高等教育出版社,20062 郑君里.信号与系统M.第二版:高等教育出版社,2000.3 张志涌.MATLAB教程M.2009年修订版:北京航空航天大学出版社,2009.第六章:附录3.2.1 简单的正弦稳态电路源代码z1=3j; z2=5;z3=-2j;z23=z2*z3/(z2+z3)
26、;z=z1+z23;uc=10*exp(j*pi/6); Ir=uc/z2,Ic=uc/z3,I=Ic+Ir,Ul=z1*I,Us=z*I disp( uc Ir Ic I Ul Us)disp(幅值),disp(abs(uc,Ir,Ic,I,Ul,Us) disp(相位),disp(angle(uc,Ir,Ic,I,Ul,Us)*180/pi) x=compass(uc,Ir,Ic,I,Ul,Us); set(x,linewidth,2)3.2.2用支路电流法和节点电压法求解电路源代码z1=2;z2=2;z3=2; zl=3j;zc=-2j;Us1=12;Us3=3;Is2=2;Z=1,1,
27、1,0,0;0,0,1,-1,-1;z1,-zl,0,0,0;0,0,0,-z3,zc;-z1,0,z2,z3,0;Y=-Is2,-Is2,Us1,Us3,-Us3;X=ZY; I1=X(1),I2=X(2),I3=X(3),I4=X(4),I5=X(5);disp( I1 I2 I3 I4 I5)disp(I1,I2,I3,I4,I5)disp(幅值),disp(abs(I1,I2,I3,I4,I5) disp(相位),disp(angle(I1,I2,I3,I4,I5)*180/pi)x=compass(I1,I2,I3,I4,I5); set(x,linewidth,2)3.2.3用网孔
28、电流法求解电路源代码z1=3;z2=2;w=1000; L=0.005;c1=500*10(-6);c2=c1;zl=w*L*j;zc1=-j/(w*c1);zc2=zc1;Us1=10*sqrt(2);Us2=2*sqrt(2);Z=z1+zl,-zl,0;-zl,zl+zc1,-zc1;0,-zc1,zc1+zc2+z2;Y=Us1,-Us2,0;X=ZY; I1=X(1);I2=X(2);I3=X(3);i1=I1,i2=I2,i3=I3,i4=I3-I2,i5=I1-I2disp( i1 i2 i3 i4 i5)disp(幅值),disp(abs(i1,i2,i3,i4,i5)disp
29、(相位),disp(angle(i1,i2,i3,i4,i5)*180/pi)x=compass(i1,i2,i3,i4,i5); set(x,linewidth,2)3.2.4正弦稳态电路:仪表读数问题源代码zr=1;w=10000;i1=30*sqrt(2);U=10; zc1=-j/(w*sym(c1); zl=j*w*sym(l); c2=2/(3*w2*sym(l); zc2=-j/(w*c2); zlc2=zl*zc2/(zl+zc2); z=zr+zc1+zlc2 uc=30*sqrt(2)*j;%uc=zl*i1 zc2=-3/2*j; i2=uc/zc2; disp(i2) disp(相位:),disp(abs(i2) disp(幅值:),disp(angle(i2)*180/pi) disp(电流表读数/A),disp(abs(i2)/sqrt(2) i=i1+i2; disp(功率表读数/W),disp(abs(i/sqrt(2)*U)课程设计独创性声明:本实验属个人在老师同学帮助下独立思考完成,原创,不允许在未经本人的同意情况下私自复制。 学生签名: 指导教师评语:课程设计成绩: 指导教师签名: 系(教研室)意见: 系(教研室)主任签名: 23