




已阅读5页,还剩124页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB基础编程入门,1,目录,第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二端口电路,2,第一章MATLAB简介MATLAB(MATrixLABoratory,即矩阵实验室)是MathWork公司推出的一套高效率的数值计算和可视化软件。MATLAB是当今科学界最具影响力、也是最具活力的软件,它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB语言有如下优点:1.编程简单使用方便MATLAB的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在MATLAB环境下,数组的操作与数的操作一样简单。MATLAB的矩阵和向量操作功能是其他语言无法比拟的。,3,2.函数库可任意扩充由于MATLAB语言库函数与用户文件的形式相同,所以用户文件可以像库函数一样随意调用。所以用户可根据自己的需要任意扩充函数库。3.语言简单内涵丰富MATLAB语言中最重要的成分是函数,其一般形式为:Functiona,b,c=fun(d,e,f)fun是自定义的函数名,只要不与库函数名相重,并且符合字符串的书写规则即可。这里的函数既可以是数学上的函数,也可以是程序块或子程序,内涵十分丰富。每个函数建立一个同名的M文件,如上述函数的文件名为fun.m。这种文件简单、短小、高效,并且便于调试。,4,4.简便的绘图功能MATLAB具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要在坐标图上加标题。坐标轴标记。文本注释及栅格等,也可一指定图线形式(如实线、虚线等)和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。5.丰富的工具箱由于MATLAB的开放性,许多领域的专家都为MATLAB编写了各种程序工具箱。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。,5,6,第二章MATLAB基本语法,2.1变量及其赋值(1)标识符与数标识符是标识变量名、常量名、函数名和文件名的字符串的总称。标识符可以是英文字母、数字和下划线等符号。标识符第1个字符必须是英文字母,MATLAB对大、小写敏感。MATLAB只有一种数据格式,双精度(即64位)二进制,对应于十进制16位有效数和308次幂。,7,(2)矩阵及其元素的赋值变量=表达式(数),a=123;456;789x=-1.3sqrt(3)(1+2+3)/5*4x(5)=abs(x(1)a(4,3)=6.5a=1.00002.00003.00004.00005.00006.00007.00008.00009.0000006.5000,元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。元素用()中的数字(下标)来注明,一维用一个下标,二维用两个下标,逗号分开。,a(5,:)=5,4,3b=a(2,4,1,3)a(2,4,5,:)=a/7,如果赋值元素的下标超过原来矩阵的大小,矩阵的行列会自动扩展。全行赋值,用冒号。提取交点元素;抽取某行元素用空矩阵。,8,9,10,(3)复数,c=3+5.2iz=1+2i,3+4i;5+6i,7+8iz=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):行列互换。,11,12,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,13,14,(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,f2fb2=fb1;f5,全1矩阵全0矩阵魔方矩阵:元素由1到nn的自然数组成,每行、每列及两对角线上的元素之和均等于(n3+n)/2。单位矩阵是nn阶的方阵。对角线上元素为1。线性分割函数大矩阵可由小矩阵组成,其行列数必须正确,恰好填满全部元素。,15,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.0000,f2=000全0矩阵000f4=10单位矩阵01fb1=1181611357114921000001000fb1=f1,f3;f4,f2fb2=fb1;f5,16,2.2矩阵的初等运算(1)矩阵的加减乘法i.加、减法:相加减的两矩阵阶数必须相同,对应元素相加减。,n,m=size(fb2)x=-101;y=x-1y=-2-10,语句size检查矩阵阶数,两矩阵相加,阶数必须相同。两相加减的矩阵中有一个是标量时,MATLAB将标量扩展成同等元素矩阵,与另一矩阵相加减。,17,pi*x标量与矩阵相乘,不检查阶数,标量乘以矩阵的每一个元素。x=-101;X与y内阶数不同,将y转置y。读作x左乘y。y=-2-10;x*yans=2ans=20-2y*xX右乘y。10-1000,eye(3)*a左、右乘结果不同,只有单位矩阵例外。a*eye(3)单位矩阵乘以矩阵A,左、右乘结果仍等于该矩阵。a=123ans=123ans=123456456456789789789,ii.矩阵乘法,矩阵Anp阶与矩阵Bpm阶的乘积C是nm阶矩阵。,P是A阵的列数,B阵的行数,称为两个相乘矩阵的内阶数。两矩阵相乘的必要条件是内阶数相等。,C(i,j)=kA(i,k)B(k,j)值为A阵第i行和B阵第j列对应元素乘积的和。,18,19,(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.4504,nn阶方阵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=DBX*D=BX=B*inv(D)=B/D,D与B行数相等两端同时左乘以inv(D)逆阵单位阵DB为D左除BX=DB,左除时阶数检查条件:两矩阵的行数必须相等。未知矩阵在左.D的逆阵右乘以B,记作/D右除。右除时阶数检查条件:两矩阵的列数必须相等。,20,a=123;3-54;789x=x1,x2,x3b=2;0;2ax=bx=aba左除b,方程组X1+2X2+3X3=23X1-5X2+4X3=07X1+8X2+9X3=2可以表示为ax=b,21,a=123;456b=240;135d=147;852;360运算:a*bdaa*b?Errorusing=*Innermatrixdimensionsmustagree.da?Errorusing=Matrixdimensionsmustagree.,a*bans=6162092325123030a*bans=10222849daans=-0.037000.51851.0000-0.14810a/dans=0.40740.07410.00000.74070.40740.0000,22,解线性方程组Ax=B6x1+3x2+4x3=3-2x1+5x2+7x3=-48x1-4x2-3x3=-7A=634;-257;8-4-3B=3;-4;-7X=AB,A=634-2578-4-3B=3-4-7X=0.60007.0000-5.4000,23,(3)矩阵的乘方和幂次函数MATLAB的运算符*、/、和,指数函数expm、对数函数logm和开方函数sqrtm是对矩阵进行的,即把矩阵作为一个整体来运算。除此以外,其他MATLAB函数都是对矩阵中的元素分别进行,英文直译为数组运算(ArrayOperations),译为“元素群运算”,S=12;34D=147;852;360D22.DDS,幂次运算:矩阵为底数,指数是标量,同矩阵乘法一样,为保内阶数相同,底数的矩阵必须是方阵。矩阵是指数,底数是标量,矩阵也必须是方阵。底数和指数不能同时为矩阵。按矩阵运算,等于D*D按元素群运算非法运算,U1=sqrtm(S)U2=sqrt(S)V1=expm(S)V2=exp(S)Logm(D)Log(D),按矩阵运算,求平方根,可以用U1*U1=S验证按元素群运算,U2*U2S,U2.U2=S按矩阵运算按元素群运算按矩阵运算按元素群运算,24,S=1234D=147852360D2ans=5466155469665142332.Dans=2161282563248641,DS?Errorusing=Atleastoneoperandmustbescalar.V1=expm(S)V1=51.969074.7366112.1048164.0738V2=exp(S)V2=2.71837.389120.085554.5982,U1=sqrtm(S)U1=0.5537+0.4644i0.8070-0.2124i1.2104-0.3186i1.7641+0.1458iU2=sqrt(S)U2=1.00001.41421.73212.0000,Logm(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,25,(4)矩阵结构形式的提取与变换,A=8160;3571;4922B1=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矩阵整体反时针旋转90度diag提取或建立对角阵tril取矩阵的左下三角部分triu取矩阵的右上三角部分将元素按列取出排成一列,26,A=816035714922B1=fliplr(A)B1=061817532294B2=flipud(A)B2=492235718160B3=reshape(A,2,6)B3=845621319702,B4=rot90(A)B4=012672159834B5=diag(A)B5=852B6=tril(A)B6=800035004920B7=triu(A)B7=816005710022B8=A(:)B8=834159672012,27,2.3元素群运算(1)数组及其赋值数组是单行或单列的矩阵,一个N阶的数组可以表述为一个N组向量。,t=0:0.02:1z=10:-3:-5k=1:6,用两个冒号组成等增量语句格式:t=初值:增量:终值增量也可以设为负值,此时初值要比终值大增量为1时,增量值可以省略。,t=00.02000.04000.06000.08000.10000.12000.14000.16000.18000.20000.22000.24000.26000.28000.30000.32000.34000.36000.38000.40000.42000.44000.46000.48000.50000.52000.54000.56000.58000.60000.62000.64000.66000.68000.70000.72000.74000.76000.78000.80000.82000.84000.86000.88000.90000.92000.94000.96000.98001.0000,z=10741-2-5,k=123456,28,theta=00.78541.57082.35623.14163.92704.71245.49786.2832,theta=linspace(0,2*pi,9)w=logspace(0,1,11),用linspace函数格式:linspace(初值、终值、点数)logspace函数,自变量按等比级数赋值。从10的0次幂到1次幂之间按幂等分为11点(数是等比的),w=1.00001.25891.58491.99532.51193.16233.98115.01196.30967.943310.0000,29,(2)元素群的四则运算和幂次运算元素群的运算是矩阵中所有元素按单个元素运算。运算符前加.号,表示元素群运算。元素群的运算的两个矩阵必须是同阶的。(标量会自动扩展为同阶矩阵参与运算),x=1,2,3y=4,5,6z=x.*yz=x.yz=x.yz=x.2z=2.xy,z=41018x*y不能成立z=4.02.52.0元素群没有左除右除之分z=132729xy能成立吗?z=149x2能成立吗?z=2481632642xy能成立吗?,d=147;852;360d3d.33.d3d,元素群的幂次运算是各个元素自行作幂次运算,对每个元素的这种运算和对标量运算一样。但是,不能将元素群运算称为数组运算。区别左边运算,30,31,(3)元素群的函数除矩阵运算的乘、右除、左除、幂指数(/)、sqrtm、expm、logm函数外,基本函数库中的常用函数都可用于元素群运算。自变量可以是任意阶的矩阵。基本函数库(elfun),32,33,x=0:0.1:pi/4x=00.10000.20000.30000.40000.50000.60000.7000disp(显示xsin(x)cos(x)tan(x)disp(x,sin(x)cos(x)tan(x),显示xsin(x)cos(x)tan(x)001.000000.10000.09980.99500.10030.20000.19870.98010.20270.30000.29550.95530.30930.40000.38940.92110.42280.50000.47940.87760.54630.60000.56460.82530.68410.70000.64420.76480.8423,34,2.4逻辑判断及流程控制1.关系运算,a=2+2=4a=(2+2=4)a=(33)a=(34),等于,a=1a=1小于,a=1a=0小于等于,a=1a=0大于,a=1a=0,a=(4=3)a=(3=4)a=(3=4)A=magic(6)rem(A,3)p=(rem(A,3)=0)lp=find(p),大于等于,a=1a=0不等于,a=1魔方矩阵,每行、每列、对角线的元素之和=(n3+n)/2A整除3,求余数余数为0,是真,即整除找出p矩阵中不为零元素的序号,矩阵元素是按列排序号的。,35,A=magic(6)A=351626192433272123253192222720828331710153053412141643629131811,rem(A,3)ans=210210021021102102210210021021102102,p=(rem(A,3)=0)p=001001100100010010001001100100010010,lp=find(p)lp=259121316202327303134,36,矩阵元素的序号排法:nm阵中下标为(j,k)的元素序号为l=(k-1)*n+j,37,数学及逻辑运算符号,38,逻辑字符检查,位运算,集合运算,39,2.逻辑运算,A=0011B=0101An=8a=evenn=a=oddn=input(n=),ifisempty(n)=1a=empty,elseifrem(n,2)=0a=even,elsea=odd,endn=a=empty,输入数n,判断奇偶性。如果用户没有键入数就回车,程序会判断为odd。修改为用户无输入时程序自动中止。,44,(2)while语句while(表达式)语句组A,end,y=1;while1+y1,y1=yy=y/2;end,y1y1=2.2204e-016,求MATLAB相对精度,y不断减小,直至MATLAB分不出1+y与1的差别为止。,x=1;whilex=inf,x1=x;x=1.1*x;end,x1x1=1.7837e+308,45,(3)for语句fork=初值:增量:终值语句组A,end将语句组A反复执行N次,每次执行时程序中的k值不同。N=1+(终值-初值)/增量,用for语句求三角函数表forx=0:0.1:pi/4disp(x,sin(x),cos(x),tan(x),end运行结果xsin(x)cos(x)tan(x)00101/10839/84041195/12011499/149401/5209/1052295/301374/18453/10409/13841647/1724275/8892/5368/9452882/31291777/42031/2501/10451699/1936820/15013/51153/2042430/521979/14317/10947/1470992/1297486/577,46,列出构成Hilbert矩阵的程序formatrat显示形式是分数近似n=input(n=),formatratfori=1:n,forj=1:n,h(i,j)=1/(i+j-1);end,end,h,n=5h=11/21/31/41/51/21/31/41/51/61/31/41/51/61/71/41/51/61/71/81/51/61/71/81/9,增加可读性formatrat,n=input(n=)fori=1:nforj=1:n,h(i,j)=1/(i+j-1);endendh,在if,for,while与表达式之间留空格,在表达式与语句组之间必须用空格或逗号分隔,必须用逗号或分号分隔end和else。break是中止循环的命令,在多重循环中,break只能使程序跳出包含它的最内部的那个循环。,47,(4)switch语句,switch-case-otherwiseswitch表达式(标量或字符串)case值1语句组ACase值2语句组B.Otherwise语句组Nend,当表达式的值(或字符串)与某case语句中的值(或字符串)相同时,它就执行该case语句后的语句组,然后跳到终点的end。case语句可以有N-1个,如果没有任何一个case值能与表达式值相符,则执行otherwise后面的语句组N。,48,n=input(n=),switchmod(n,2),case1,a=奇,case0,a=偶,otherwise,a=空,endn=5a=奇n=input(n=),switchrem(n,2),case1,a=奇,case0,a=偶,otherwise,a=空,endn=8a=偶,判断输入数n的奇、偶、空的程序mod(x,m)x整除m取正余数,rem(a,b)a整除b,求余数n=负数n=-5a=奇n=-8a=偶,49,2.5基本绘图方法1直角坐标中的两维曲线(1)plot(y)-输入一个数组的情况,(2)Plot(x,y)-输入两个数组的情况,50,51,52,53,2线型、点型和颜色,3多条曲线的绘制有四种方法在一张图上显示多条曲线(1)用plot(t,y1,y2,)命令,54,55,(2)用hold命令,(3)在plot后使用多输入变量,56,(2)图用hold命令,(3)图在plot后使用多输入变量,57,(4)用plotyy命令,58,4.屏幕控制和其他二维绘图(1)图形屏幕控制命令图形屏幕可以开、关,可以开几个图形窗,可以在一个图形窗内华几幅分图,每幅分图可以用不同坐标。,59,通用图形函数(graphics)(h),60,61,subplot(2,2,1),stem(t,y);title(stem(t,y)subplot(2,2,2),stairs(t,y);title(stairs(t,y)subplot(2,2,3),bar(t,y);title(bar(t,y)subplot(2,2,4),fill(t,y,r);title(fill(t,y,r),62,63,subplot(1,1,1)loglogsemilogxsemilogypolar(theta,rho),取消子图绘出以log10-log10为坐标刻度的对数图使用半对数刻度绘图,x轴为log10刻度,y轴为线性刻度。使用半对数刻度绘图,y轴为log10刻度,x轴为线性刻度。极坐标绘图,角度theta为一个坐标,单位是弧度,另一坐标是矢径rho。,64,二维图形函数库,65,(3)虚数的绘图,66,67,(4)坐标比例和尺寸的设定axis命令,68,v=axisaxis(equal)axis(square)v=0101,69,5.三维曲线和曲面(1)空间曲线绘制-plot3,plot3(x,y,z,s)z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z,r)绘制空间曲线,s是线型颜色符,(2)空间曲面的绘制meshsurf,直线-连接相邻的点构成三维曲面小平面-连接相邻的点构成三维曲面,70,函数sinc(r)=sin(r)/rx=-8:0.5:8;y=x;X=ones(size(y)*x;Y=y*ones(size(x);R=sqrt(X.*X+Y.*Y);z=sin(R)./R;mesh(z),pause,r是X-Y平面上的向径,绘制sin(r)/r函数的立体图。X、Y方向各有33个样本点,生成一维自变量数组。size多维矩阵的各维长度。共建立33*33=1089个网格点的坐标矩阵X和Y,形成33*33网格的矩阵;R表示数据点到原点的距离,生成因变量。画三维曲面,R=sqrt(X.*X+Y.*Y)+eps;z=sin(R)./R;figure(2),mesh(z)R=abs(X)+abs(Y)+eps;z1=sin(R)./R;figure(3),surf(z1),在R=0(原点)处出现0/0运算,得NaN结果。eps浮点数相对精度,消除NaN。abs(X)+abs(Y)称为一范数,71,1图是mesh图,原点处出现0/0运算,得NaN结果,72,2图是mesh图,eps浮点数相对精度,消除NaN,73,3图是surf图,abs(X)+abs(Y)称为一范数,74,(3)其他三维绘图命令,75,subplot(2,2,1),R=sqrt(X.2+Y.*Y);z=sin(R)./R;meshc(z),pausetitle(meshc(z),shadingflat),shadingflat,Subplot(2,2,2),R=sqrt(X.2+Y.*Y)+eps;z=sin(R)./R;mesh(z),pausetitle(meshz(z),shadinginterp),shadinginterp,subplot(2,2,3),R=abs(X)+abs(Y)+eps;z1=sin(R)./R;surfc(z1),pausetitle(surfc(z1),shadingflat),shadingflat,%colormp(gray),subplot(2,2,4),surfc(z1),view(20,0);rotate3dtitle(surfc(z1),view(20,0),meshc(z)、surfc(z1),加入了等高线绘制命令contour3。,76,77,6.特殊图形和动画,78,79,特殊图形和动画(graphics)(u),80,81,7.彩色、光照和图像,82,83,2.6M文件、M函数及程序调试M文件是文本文件,扩展名*.m。(example.m)可以用任何编辑器来建立,可直接阅读。MATLAB程序可直接调用M文件并执行。M文件分为两种:一种是主程序,为用户解决特定的问题编制的;一种是子程序,函数文件,必须由其他M文件来调用,函数文件可以递归调用(自己调用自己)。MATLAB软件的大部分功能是来自其建立的函数集。1主程序文件主程序文件格式特征:(1)用clear、closeall等语句开始,清除原有的变量和图形。注释行以%号开始,增加可读性。MATLAB不执行%号后面的任何内容。在键入“help文件名example.m”时,屏幕会显示以%号起始的行的内容,注释可以是汉字的。,84,(2)程序的主体全局变量:在子程序中和主程序中共用的变量。应在程序的起始部分注明。全局变量语句:global变量名1变量名2程序必须用半角英文字母和符号编制(包括标点符号),只有%号后面的注释可以用中文。要注意流程控制语句的缩进及与end的对应关系。选项可以自动对程序进行缩进排版。元素之间用逗号、空格分开。不同行以分号隔开。语句结尾用回车或逗号,会显示结果,如果不想显示结果,用分号。(3)M文件的文件名、路径名不能用中文,要按MATLAB的标识符编制,因为M文件也就是MATLAB的调用命令。在MATLAB的命令窗键入程序的M文件名后,系统就开始执行M文件中的程序。,85,例1列出一个求fibonnaci数的程序,它是一个数列,从1,1开始,由数列的最后两个元素之和生成新的元素,依次递推。%计算fibonnaci数的M文件clear,closeallN=input(输入最大数值范围N=)f=1,1;i=1;%变量的初始化whilef(i)+f(i+1)N%循环条件检验f(i+2)=f(i+1)+f(i);i=i+1;%求fibonnaci数的算式endf,plot(f)%显示和绘图输入最大数值范围N=20N=20f=11235813将程序以文件名fibon.m存入一MATLAB搜索目录下,在MATLAB命令窗中键入fibon,即可执行。,86,例2求素数的程序。只能被自身和1除净的数。%求素数(primenumber)的程序clear,closeallN=input(N=),x=2:N;foru=2:sqrt(N)n=find(rem(x,u)=0end,xN=44x=235711131719232931374143,87,人机交互命令:echoon(off)在执行M文件每行程序前先显示其内容。pause(n)程序执行到此,暂停n秒,再继续。keyboard程序执行到此暂停,在屏幕上显示字符K,用户可以在命令窗进行任何操作,键入字符串return,恢复运行原来的程序。input(提示符)程序执行到此暂停,屏幕显示引号中的字符串,要求用户输入数据。数据输入后,程序继续运行。c(control-c)强行停止程序运行的命令。menu用来产生人际交互的备选择菜单的命令。,88,2函数文件函数文件是用来定义子程序的。与主程序文件的主要区别有3点:(1)由function起头,后面跟的函数名,函数名必须与文件名相同。(2)有输入输出变元(变量),可以进行变量传递。(3)除非用global声明,程序中的变量均为局部变量,不保存在工作空间中。例3函数文件mean.mfunctiony=mean(x)%文件的第一条语句定义了函数名、输入变元及输出变元。(这条语句可以区分程序文件和函数文件)输入变元、输出变元可以有若干个,必须在第一条语句中列出。%MEAN求平均值。对于向量,mean(x)返回该向量x中各元素的平均值%对于矩阵,mean(x)是一个包含各列元素平均值的行向量m,n=size(x);%变量m,n和y都是函数mean的局部变量,当mean文件执行完毕,这些变量值会自动消失,不保存在工作空间中。如果在执行该文件前,工作空间中已有同名的变量,系统会把两者看作各自无关的变量。如果希望将两者看作同一变量,则必须在主程序和子程序中都加入global语句,对此共同变量进行声明。Ifm=1M=n;end%处理单行向量y=sum(x)/m,89,z=magic(7)mean(z)%对输入变元x赋值,应把x代换成主程序中的已知变量。假如它是一个已知向量或矩阵Z,可以写成mean(Z),该变量Z通过变元替换传递给mean函数后,在子程序内,它就变成了局部变量x。z=30394811019283847791827294668172635375141625343645131524334244421233241433122231404921120ans=25252525252525,90,例4多输入变量函数logspace,用于生成等比分割的数组。functiony=logspace(d1,d2,n)%LOGSPACE对数均分数组%LOGSPACE(d1,d2)在10d1与10d2之间生成长度为50的对数均分数组%如果d2为pi,则这些点在10d1和pi之间%LOGSPACE(d1,d2,n)生成的数组长度为n,n的默认值为50ifnargin=2n=50;end%输入变元分析及n的默认值设置,nargin输入变元的数目ifd2=pid2=log10(pi);end%d2为pi时的设置y=(10).d1+(0:n-2)*(d2-d1)/(n-1),d2;%将结果返回到输出变元特定变量nargin表示输入变元的数目。nargout表示输出变元数目的变量。MATLAB常常根据nargin和nargout的数目不同而调用不同的程序段,从而体现它的智能作用。调用logspace(1,10,50)要给出d1,d2,n的值。,自学,91,程序调试主程序不需要专门的调试命令,需要用调试命令的主要是函数程序。因为函数程序出错停机时,变量不能保存,无现场记录。会给调试带来很大困难,解决方法:(1)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错依据。(2)在子程序中适当部位加keyboard命令。系统会暂停,等待用户键入命令。这是子程序的变量还存在于工作空间中,可以对它们进行检查。(3)将函数文件的第一行加%号,成为程序文件,进行初步调试。第一行中的输入变元,可改用input或赋值语句来输入,调好后再改回函数文件。(4)使用MATLAB提供的调试命令。调试命令较繁琐,不作介绍。,92,2.7MATLAB的数据分析函数库(datafun函数库)基本的数据分析MATLAB的基本数据处理功能是按列向进行的,因此要求待处理的数据矩阵按列向分类,而行向则表示数据的不同样本。例如,10个学生的身高及3门课程分数列表如下:data=154498367;158998175;1551006886;145637596;145637596;141556575;155566485;147898777;1479654100;145607667,93,一些数据处理命令的结果,94,std(标准差)是指列中N个元素与该列平均值mean(data)之差的平方和开方。Trapz(求积分)可以看成求和,梯形法求积分近似于求元素和,差别在于梯形法是把相邻两点数据的平均值作为数据点。10个数据只能产生9个数据点,相加以后比元素和少一组数据,把它乘以步长才真正表示了面积。其差额为半个首点和半个末点的数据和,即trapz(data)=sum(data)-0.5(data(1)+data(N)在N很大时两者的误差很小。有些数据处理命令的结果不是一个标量而是一个列向量。为了节省篇幅,只取数据中的前5行。,95,产生列结果的数据处理命令,96,97,第二章MATLAB在电路中的应用,5.1电阻电路例1电阻电路的计算已知:R1=2,R2=4,R3=12,R4=4,R5=12,R6=4,R7=2。求:(1)如us=10V,求i3,u4,u7;(2)如已知u4=6V,求us,i3,u7。解:建模,用网孔法,列出网孔方程为,98,或直接列出数字方程,简写为A*I=B*us(1)令us=10V,由可以得到问题(1)的解。,可写成如下的矩阵形式,99,(2)如已知u4=6V,求us,i3,u7。由电路的线性性质,可令,根据问题(1)的结果和电路图可列出下式,100,可以通过下式求问题(2)的解%MATLAB程序q501.mclear,closeall,formatcompactR1=2;R2=4;R3=12;R4=4;R5=12;R6=4;R7=2;%为给定元件赋值display(解问题(1))%解问题(1)a11=R1+R2+R3;a12=-R3;a13=0;%将系数矩阵各元件赋值a21=-R3;a22=R3+R4+R5;a23=-R5;a31=0;a32=-R5;a33=R5+R6+R7;b1=1;b2=0;b3=0;,101,us=input(us=),%输入解(1)的已知条件A=a11,a12,a13;a21,a22,a23;a31,a32,a33%列出系数矩阵AB=b1;0;0;I=AB*us;%I=ia;ib;icia=I(1);ib=I(2);ic=I(3);i3=ia-ib,u4=R4*ib,u7=R7*ic%解出所需变量display(解问题(2)%利用电路的线性性质及问题1的解求解问题2u42=input(给定u42=);k1=i3/us;k2=u4/us;k3=u7/us;%由问题(1)得出待求量与us的比例系数us2=u42/k2,i32=k1/k2*u42,u72=k3/k2*u42%按比例方法求出所需变量,102,程序运行结果解问题(1)us=10VA=18-120-1228-120-1218i3=0.3704,u4=2.2222,u7=0.7407解问题(2)给定u42=6us2=27.0000,i32=1.0000,u72=2,103,例2含受控源的电阻电路已知R1=R2=R3=4,R4=2,控制常数k1=0.5,k2=4,is=2A,求i1和i2?解:建模列出节点方程,控制变量i1,i2与节点电压ua,ub的关系为,讲,104,将i1,i2作为未知量移至等号左端,写成矩阵形式为,令is=2A,解上式i1,i2,105,%MATLABq502.mclear,formatcompactR1=4;R2=4;R3=4;R4=2;%设置元件参数is=2;k1=0.5;k2=4;%按A*X=B*is列写此电路的矩阵方程,其中X=ua;ub;i1;i2a11=1/R1+1/R2;a12=-1/R2;a13=0;a14=-k1;%设置系数Aa21=-1/R2;a22=1/R2+1/R3+1/R4;a23=-k2/R3;a24=k1;a31=1/R2;a32=-1/R2;a33=-1;a34=0;a41=0;a42=1/R4;a43=0;a44=-1;A=a11,a12,a13,a14;a21,a22,a23,a24;a31,a32,a33,a34;a41,a42,a43,a44;B=1;0;0;0;%设置系数BX=AB*is;%解出Xi1=X(3),i2=X(4)%显示要求的分量,106,5.2动态电路例3一阶动态电路,三要素公式。已知:R1=3,R2=12,R3=6,C=1F;us=18V,is=3A,在t0时,开关S位于“1”,电路已处于稳定状态。(1)t=0时,开关S闭合到“2”,求uc(t),iR2(t),并画出波形;(2)若经10秒,开关S又复位到“1”,求uc(t),iR2(t),并画出波形。,107,解:建模这是一阶动态电路,可用三要素公式求解。(1)求初始值uc(0+)和iR(0+),先求uc(0-),在t=0-时,开关位于“1”,电路已达到稳定。电容可看作开路,不难求得uc(0-)=-12V。根据换路时电容电压不变的定律,得电容初始电压uc(0+)=uc(0-)=-12V在t=0时,开关已闭合到“2”,可求得非独立初始值,其次求稳定值。达到稳态时电容可看作开路,于是可得,时间常数;用三要素公式得,108,(2)经10秒后,开关又闭合到“1”,将t=10s代入(4)式即得电容电压的初始值为uc(10+)=uc(10)。由电路图可见这时,保持不变。达到稳定时,这时,用三要素公式得,109,%MATLABq5-4R1=3;us=18;is=3;R2=12;R3=6;C=1;%给出原始数据%解问题(1)uc0=-12;ir20=uc0/R2;ir30=uc0/R3;%算出初值ir20及uc0ic0=is-ir20-ir30;ir2f=is*R3/(R2+R3);%算出终值ir2f及ucfir3f=is*R2/(R2+R3);ucf=ir2f*R2;icf=0;%注意时间数组的设置,在t=0及10附近设两个点t=-2-eps:0-eps,0:9,10-eps,10+eps,11:20;figure(1),plot(t),grid%t=10+eps对应下标15uc(1:3)=-12;ir2(1:3)=3%t50000)/2/pi;%求幅频特性大于50kHz的频带fhmin=min(fh),fhmax=max(fh),程序运行结果:谐振频率f0=1.5915e+005,空载品质因数Q0=200,等效信号源内阻Re=4.0085e+004,考虑内阻后的品质因数Q=40.0853,通频带B=3.9704e+003,fhmin=1.5770e+005,fhmax=1.6063e+005,119,5.5二端口电路例7阻抗匹配网络的计算为使信号源(其内阻Rs=12)与负载(RL=3)相匹配,在其间插入一阻抗匹配网络,电路如图。已知Z1=-j6,Z2=-j10,Z3=j6。若Us=240,求负载吸收的功率。解:建模方法1用Z方程求解,对于二端口电路有,即,120,对电源端有即对负载端有即将上四式写为矩阵形式中z11=Z1+Z2=-j16,z12=-j10,z22=Z2+Z3=-j4,z21=-j10Rs=12,RL=3,Us=240解出U2,则负载吸收功率为,121
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 8292-2025浓缩天然胶乳挥发脂肪酸值的测定
- 材料疲劳裂纹扩展模型重点基础知识点
- 高考数学真题总结与答案
- 行政管理的法律风险识别与应对策略试题及答案
- 停车场火灾应急预案编制(3篇)
- 行政管理实践中的法律盲点试题及答案
- 火灾应急预案及程序护理(3篇)
- 信息技术核心概念试题及答案
- 2025年海外市场的战略开发风险试题及答案
- 行政责任追究的实际案例试题及答案
- 医院质控办工作职责、人员岗位职责
- 药品生产质量管理规范(2010版)(含13个附录)
- 高校教学课件:旅游文化学
- 安全主题班会 《防洪防汛知识讲解》教学课件
- DB62∕T 3171-2019 双向螺旋挤土灌注桩技术规程
- 土壤分析技术规范(第二版)
- 论文答辩武汉大学论文答辩开题报告PPT模板
- 推进白洋淀景区运营机制改革实施方案
- 2021年卒中中心建设相关制度及流程汇编
- 机械故障诊断大作业滚动轴承
- 密封件定位套机械加工工艺过程卡片
评论
0/150
提交评论