MATLAB编程入门目录第1章MATLAB简介第2章MATLAB基本语法2.1变量及其赋值2.2矩阵的初等运算2.3元素群运算2.4逻辑判断及流程控制2.5基本绘图方法2.6M文件及程序调试第3章MATLAB在电路中的应用3.1电阻电路3.2动态电路3.3正弦稳态电路3.4频率响应3.5二端口电路第一章MATLAB简介MATLAB(MATrixLABoratory,即矩阵实验室)是MathWork公司推出的一套高效率的数值计算和可视化软件。MATLAB是当今科学界最具影响力、也是最具活力的软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB语言有如下优点:1.编程简单使用方便MATLAB的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在MATLAB环境下,数组的操作与数的操作一样简单。MATLAB的矩阵和向量操作功能是其他语言无法比拟的。2.函数库可任意扩充由于MATLAB语言库函数与用户文件的形式相同,所以用户文件可以像库函数一样随意调用。所以用户可根据自己的需要任意扩充函数库。3.语言简单内涵丰富MATLAB语言中最重要的成分是函数,其一般形式为:Function[a,b,c…]=fun(d,e,f…)fun是自定义的函数名,只要不与库函数名相重,并且符合字符串的书写规则即可。这里的函数既可以是数学上的函数,也可以是程序块或子程序,内涵十分丰富。每个函数建立一个同名的M文件,如上述函数的文件名为fun.m。这种文件简单、短小、高效,并且便于调试。4.简便的绘图功能MATLAB具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要在坐标图上加标题。坐标轴标记。文本注释及栅格等,也可一指定图线形式(如实线、虚线等)和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。5.丰富的工具箱由于MATLAB的开放性,许多领域的专家都为MATLAB编写了各种程序工具箱。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。第二章MATLAB基本语法2.1变量及其赋值(1)标识符与数标识符是标识变量名、常量名、函数名和文件名的字符串的总称。标识符可以是英文字母、数字和下划线等符号。标识符第1个字符必须是英文字母,MATLAB对大、小写敏感。MATLAB只有一种数据格式,双精度(即64位)二进制,对应于十进制16位有效数和±308次幂。(2)矩阵及其元素的赋值变量=表达式(数)a=[123;456;789]x=[-1.3sqrt(3)(1+2+3)/5*4]x(5)=abs(x(1))a(4,3)=6.5a=1.00002.00003.00004.00005.00006.00007.00008.00009.0000006.5000元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。元素用()中的数字(下标)来注明,一维用一个下标,二维用两个下标,逗号分开。a(5,:)=[5,4,3]b=a([2,4],[1,3])a([2,4,5],:)=[]a/7如果赋值元素的下标超过原来矩阵的大小,矩阵的行列会自动扩展。全行赋值,用冒号。提取交点元素;抽取某行元素用空矩阵。(3)复数c=3+5.2iz=[1+2i,3+4i;5+6i,7+8i]z=[1,3;5,7]+[2,4;6,8]*if=sqrt(1+2i)f*f复数的虚数部分用i或j表示,如曾用过i,j作变量,用cleari,j复数矩阵有两种赋值方法:①将其元素逐个赋予复数;②将其实部和虚部矩阵分别赋值。w=z’(共轭转置)u=conj(z)(共轭)v=conj(z)’(转置)Z’复数矩阵共轭转置:行列互换,各元素的虚部反号。函数conj(z)共轭:只把各元素的虚部反号。转置conj(z)’:行列互换。z=1.0000+2.0000i3.0000+4.0000i5.0000+6.0000i7.0000+8.0000iw=z'(共轭转置)w=1.0000-2.0000i5.0000-6.0000i3.0000-4.0000i7.0000-8.0000iu=conj(z)(共轭)u=1.0000-2.0000i3.0000-4.0000i5.0000-6.0000i7.0000-8.0000iv=conj(z)’(转置)v=1.0000+2.0000i5.0000+6.0000i3.0000+4.0000i7.0000+8.0000i(4)变量检查whowhosinfNaN检查工作空间中的变量;检查变量的详细特征无穷大1/0;非数(NotaNumber)0/0inf/inf0*inf。系统不停止运算,结果仍为inf或NaN。(5)基本赋值矩阵f1=ones(3,2)f2=zeros(2,3)f3=magic(3)f4=eye(2)f5=linspace(0,1,5)fb1=[f1,f3;f4,f2]fb2=[fb1;f5]全1矩阵全0矩阵魔方矩阵:元素由1到nn的自然数组成,每行、每列及两对角线上的元素之和均等于(n3+n)/2。单位矩阵是n×n阶的方阵。对角线上元素为1。线性分割函数大矩阵可由小矩阵组成,其行列数必须正确,恰好填满全部元素。f1=111111全1矩阵f3=816魔方矩阵357492线性分割函数f5=00.25000.50000.75001.0000大矩阵可由小矩阵组成fb2=1.00001.00008.00001.00006.00001.00001.00003.00005.00007.00001.00001.00004.00009.00002.00001.0000000001.000000000.25000.50000.75001.0000f2=000全0矩阵000f4=10单位矩阵01fb1=1181611357114921000001000fb1=[f1,f3;f4,f2]fb2=[fb1;f5]2.2矩阵的初等运算(1)矩阵的加减乘法i.加、减法:相加减的两矩阵阶数必须相同,对应元素相加减。[n,m]=size(fb2)x=[-101];y=x-1y=-2-10语句size检查矩阵阶数,两矩阵相加,阶数必须相同。两相加减的矩阵中有一个是标量时,MATLAB将标量扩展成同等元素矩阵,与另一矩阵相加减。pi*x标量与矩阵相乘,不检查阶数,标量乘以矩阵的每一个元素。x=[-101];X与y内阶数不同,将y转置y’。读作x左乘y’。y=[-2-10];x*y’ans=2ans=20-2y‘*xX右乘y’。10-1000eye(3)*a左、右乘结果不同,只有单位矩阵例外。a*eye(3)单位矩阵乘以矩阵A,左、右乘结果仍等于该矩阵。a=123ans=123ans=123456456456789789789ii.矩阵乘法矩阵An×p阶与矩阵Bp×m阶的乘积C是n×m阶矩阵。P是A阵的列数,B阵的行数,称为两个相乘矩阵的内阶数。两矩阵相乘的必要条件是内阶数相等。C(i,j)=ΣkA(i,k)·B(k,j)值为A阵第i行和B阵第j列对应元素乘积的和。(2)矩阵的除法及线性方程组的解a=123456789AV=IV=A-1V=inv(a)inv(a)*aV=1.0e+016*-0.45040.9007-0.45040.9007-1.80140.9007-0.45040.9007-0.4504n×n阶方阵A和同阶的方阵V相乘,得出n阶单位矩阵I。I为eye(n)。V是A的逆阵。V存在条件:A的行列式不等于0,det(A)≠0V=A-1MATLAB内部函数inv,得出A的逆阵V。D*X=Binv(D)*D*X=inv(D)*Binv(D)*D=II*X=XX=inv(D)*B=D\BX*D=BX=B*inv(D)=B/DD与B行数相等两端同时左乘以inv(D)逆阵单位阵D\B为D左除BX=D\B,左除时阶数检查条件:两矩阵的行数必须相等。未知矩阵在左.D的逆阵右乘以B,记作/D右除。右除时阶数检查条件:两矩阵的列数必须相等。a=[123;3-54;789]x=[x1,x2,x3]b=[2;0;2]ax'=bx=a\ba左除b方程组X1+2X2+3X3=23X1-5X2+4X3=07X1+8X2+9X3=2可以表示为ax’=ba=[123;456]b=[240;135]d=[147;852;360]运算:a*bd\aa*b???Errorusing==*Innermatrixdimensionsmustagree.d\a???Errorusing==\Matrixdimensionsmustagree.a'*bans=6162092325123030a*b'ans=10222849d\a'ans=-0.037000.51851.0000-0.14810a/dans=0.40740.07410.00000.74070.40740.0000解线性方程组Ax=B6x1+3x2+4x3=3-2x1+5x2+7x3=-48x1-4x2-3x3=-7A=[634;-257;8-4-3]B=[3;-4;-7]X=A\BA=634-2578-4-3B=3-4-7X=0.60007.0000-5.4000(3)矩阵的乘方和幂次函数MATLAB的运算符*、/、\、和^,指数函数expm、对数函数logm和开方函数sqrtm是对矩阵进行的,即把矩阵作为一个整体来运算。除此以外,其他MATLAB函数都是对矩阵中的元素分别进行,英文直译为数组运算(ArrayOperations),译为“元素群运算”S=[12;34]D=[147;852;360]D^22.^DD^S幂次运算:矩阵为底数,指数是标量,同矩阵乘法一样,为保内阶数相同,底数的矩阵必须是方阵。矩阵是指数,底数是标量,矩阵也必须是方阵。底数和指数不能同时为矩阵。按矩阵运算,等于D*D按元素群运算非法运算U1=sqrtm(S)U2=sqrt(S)V1=expm(S)V2=exp(S)Logm(D)Log(D)按矩阵运算,求平方根,可以用U1*U1=S验证按元素群运算,U2*U2≠S,U2.×U2=S按矩阵运算按元素群运算按矩阵运算按元素群运算S=1234D=147852360D^2ans=5466155469665142332.^Dans=2161282563248641D^S???Errorusing==^Atleastoneoperandmustbescalar.V1=expm(S)V1=51.969074.7366112.1048164.0738V2=exp(S)V2=2.71837.389120.085554.5982U1=sqrtm(S)U1=0.5537+0.4644i0.8070-0.2124i1.2104-0.3186i1.7641+0.1458iU2=sqrt(S)U2=1.00001.41421.73212.0000Logm(D)ans=1.2447-0.91702.82551.60442.5760-1.9132-0.75391.13721.6724log(D)Warning:Logofzero.ans=01.38631.94592.07941.60940.69311.09861.7918-Inf(4)矩阵结构形式的提取与变换A=[8160;3571;4922]B1=fliplr(A)B2=flipud(A)B3=reshape(A,2,6)提取矩阵中某些特殊结构的元素,组成新的矩阵,改变矩阵结构。fliplr矩阵左右翻转flipud矩阵上下翻转reshape阶数重组(元素总数不变)B4=rot90(A)B5=diag(A)B6=tril(A)B7=triu(A)B8=A(:)'rot90