MATLAB运算基础第2章答案.docx
试验Ol讲评、参考答案讲评未交试验报告的同学名单数学:6元(11、12级)信科:12-04,12-22z13-47批改状况:问题1:不细致,式子中出错。问题2:提交的过程不完整。问题3:运用语句尾分号(;)不当,提交的过程中不该显示的结果显示。问题4:截屏窗口没有调整大小。附参考答案:海南大学信息科学技术学院实验报告成绩I指导教际一实验课程:MATLAB软件课内试验王平学号:姓名:班级:同组成员:完成日期:20年月日(第2章MATLAB数据及其运算)一、试验目的熟悉启动和退出MATLAB的方法。2 .熟悉MATLAB叮嘱窗口的组成。3 .驾驭建立矩阵的方法。4 .驾驭MATLAB各种表达式的书写规则幺及常用函数的运用。二、试验内容1 .数学表达式计算先求下列表达式的值,然后显示MATLAB工作空间的运用状况并保存全部变量。1.1 计算三角函数(留意:度要转换成弧度,02如何给出)示例:点击CommandWirldoW窗口右上角的将叮嘱窗口提出来成悬浮窗口,适当调整窗口大小。叮瞋由口中的执行过程:0®,'Co*andTindovFileEditDebugDesktopWindowHelp*'NewtoMATLAB?WatchthisVideo,seeDemos,orreadGettingStarte(L»zl=2*sin(85*pi180)/(l+exp(2)zl=0.2375f×»I1.2 计算自然对数,其中(提示:CIC叮嘱擦除叮嘱窗口,Clear则清除工作空间中的全部变量,运用时留意区分,慎用CIear叮嘱。应用点乘方)叮!窗口中的执行过程:)Co*BandTindov匚|叵"!区FileEditDebugDesktopVindowHelp.NewtoMATLAB?WatchthisVideo.seeDemos,orreadGettingStarted,»x=2,l+2i:-0.45,5x=2.OOOO1.0000+2.OOOOi-0.45005.0000»z2=(1/2)*log(x+sqrt(l+x.2)z2=0.72180.7347+0.5317i-0.21801.1562A»1.3 求数学表达式的一组值。二一3.0, 2.9, ,2.9,3.0z3=sin(4+0.3)÷In22提示:利用冒号表达式生成。向量,求各点的函数值时用点乘运算。叮Ii窗口中的执行过程:CoBAand Vxndov目回区FileZditDebugDesktopYindowHelpNeWtoMATLAB?WatchthisVideo,seeDenos,orreadGettingStrte<L»a=-3.0:0.1:3.0a=Colunns1through10-3.0000-2.9000-2.8000-2.7000-2.6000-2.5000-2.4000-2.3000-2.2000-2.1000Colunns11-2.0000through-1.900020-1.8000-1.7000-1.6000-1.5000-1.4000-1.3000-1.2000-1.1000Colunns21-1.0000through-0.900030-0.8000-0.7000-0.6000-0.5000-0.4000-0.3000-0.2000-0.1000Columns310through0.1000400.20000.30000.40000.50000.60000.70000.80000.9000Columns411.0000through1.1000501.20001.30001.40001.50001.60001.70001.80001.9000Colunns512.0000through2.1000602.20002.30002.40002.50002.60002.70002.80002.9000Colunn613.OOOO»z3=(exp(0.3*a)-exp(-0.3*a)2.*sin(a+0.3)+log(0.3+a)2)z3三Colunns1through50.7388+3.1416i0.7696+3.1416i0.7871+3.1416i0.7913+3.1416i0.7822+3.1416iColunns6through100.7602+3.1416i0.7254+3.1416i0.6784+3.1416i0.6196+3.1416i0.5496+3.1416iColunns11through150.4688+3.1416i0.3780+3.1416i0.2775+3.1416i0.1680+3.1416i0.0497+3.1416iColuans16through20-0.0771+3.1416i-0.2124+3.1416i-0.3566+3.1416i-0.5104+3.1416i-0.6752+3.1416iColunns21through25-0.8536+3.1416i-1.0497+3.1416i-1.2701+3.1416i-1.5271+3.1416i-1.8436+3.1416iColunns26through30-2.2727+3.1416i-2.9837+3.1416i-37.0245-3.0017-2.3085Colunns31through35-1.8971-1.5978-1.3575-1.1531-0.9723Colunns36through40-0.8083-0.6567-0.5151-0.3819-0.2561Colunns41through45-0.1374-0.02550.07920.17660.2663Colunns46through500.34780.42060.48410.53790.5815Columns51through550.61450.63660.64740.64700.6351Colunns56through600.61190.57770.53270.47740.4126Colunn610.3388A»1.4 求分段函数的一组值t2OZ<1Z4=It2-Ilr<2,其中UO:0.5:2.52-2f+l2t<3提示:用逻辑表达式求分段函数值。叮!窗口中的执行过程:F,'CosaandVindov13回卤EileEditDebagBesktopindorHelpNeWtoMATLAB?WatchthisYidgseeDemos,orreadGettinNStarted.×»t=0:0.5:2.5O0.50001.00001.50002.00002.5000»z4=(t>=0&t<1).*t.2+(t>=l&t<2).»(t.*2-1)+(t>=2&t<3).*d.2-2*t+l)z4=O0.250001.25001.00002.2500A»I1.5 对工作空间的操作接着显示MATLAB当前工作空间的运用状况并保存全部变量提示:用到叮嘱WhO,whos,save,clear,load,请参考教材相关内容。叮!窗口中的执行过程:»who为显示当前工作空间中的变量名Yourvariablesare:atxzlz2z3z4»Whos%显示当前工作空间中的变量名及信息AttributesNameSizeBytesClassa1x61488doublet1x648doubleX2x264doublecomplexzlIxl8doublez22x264doublecomplexz31x61976doublecomplexz41x648double»savevarfile为生成文件Var,并将当前工作空间的变量存入其中»clearall%清除当前工作空间中的全部变量»who»whos»loadvarfile%将文件Var装入»whoYourvariablesare:atxzlz2z3z4»whosNameSizeBytesClassAttributesa1x61488doublet1x648doubleX2x264doublecomplexzlIxl8doublez22x264doublecomplexz31x61976doublecomplexz41x648double2 .矩阵运算及数组运算已知:12 34A= 34 73 65-487713-1B=2O33-272.1 矩阵加、减和数乘运算A+6*B和A-B+I(其中I为单位矩阵。留意:如何得到单位矩阵)叮!窗口中的执行过程:2.2 矩阵乘积和点乘积A*B和A.*B叮理窗口中的执行过程:2.3 矩阵的乘方和点乘方A3和A.3叮窗口中的执行过程:')Cos*andTindov11×2.4 矩阵的右除和左除A/B及BA叮1«窗口中的执行过程:,!CoUandTindov0®FileEditDebugDesktopWindowKelpS»AZBans=16.4-13.67.635.8-76.250.267-13468»BAans=109.4-131.2322.8-5385-171-61.689.8-186.2>>2.5 拼接矩阵成大的矩阵A,B和A(1,3,:)02叮Ii窗口中的执行过程:CoBBandVindov0®FileEditDebugDesktopWindowHelp»A,Bans=1234-413-134一I872O336573-2i»A(l,3,ans=1234-4365f三I45111O1920一540f×>>3 .矩阵乘积、矩阵的子矩阵设有矩阵A和B-12345678910A 二1112131415161718192021222324253 01617 -6 9B =0 23 -49 704 13 113.1 求矩阵A和B的乘积求它们的乘积并赋给C。(提示:可简化A的输入,用冒号表达式、reshape.矩阵转置)叮!窗口中的执行过程:FileEditDebugDesktopWindowHelp-»A=I:25A=Columns1through1312345678910111213Columns14through25141516171819202122232425»A=reshape(A,5,5)A=16111621271217223813182349141924510152025»A=A,A=12345678910111213141516171819202122232425»B=3,0,16;17,-6,9;0,23-4;9,7,0;4,13,UB=301617-69023-497041311»C=A*BC=9315077258335237423520397588705557753890717>>OVR.:3.2 求矩阵C的子矩阵将矩阵C的右下角3X2子矩阵赋给Do叮!窗口中的执行过程:J Couand Vindov0®3.3 查看MATLAB工作空间的运用状况叮!窗口中的执行过程:JCB>andVindov0®FileEditDebugDesktopWindowHelp0»whoYourvariablesare:ABCD»whosNameSizeBytesClassAttributesA5x5200doubleB5x3120doubleC5x3120doubleD3x248doublef×>>IOVR4 .完成下列数据操作4.1 求100,999之间能被21整除的数的个数提示:先利用冒号表达式,再利用find和Iength函数。叮暝窗口中的执行过程:4.2建立一个字符串向量,删除其中的大写字母提示:利用find函数和空矩阵。叮窗口中的执行过程:三、试验提示4.2 计算三角函数提示(留意:度要转换成弧度,/如何给出)提示1:示例:点击CommandWindoW窗口右上角的aL将叮嘱窗口提出来成悬浮窗口,适当调整窗口大小。叮瞋窗口中的执行过程:提木2:e2的表示请查表“2.3常用数学函数及其含义”。用exp(2)°4.3 计算自然对数提示,其中提示1:clc叮嘱擦除叮嘱窗口,clear则清除工作空间中的全部变量,运用时留意区分,慎用clear叮嘱。提示2:In和开方的表示请查“表2.3常用数学函数及其含义”。用log,sqrt.提示3:f是数组运算。用x£2或x.*x,提不4:i为更数的虚数单位(j也是)。若将i作变量则其虚数单位无效,狂原用CIearL慎用i,j做变量。1.4 求分段函数的一组值提示t20r<lZ4=It2-Ilr<2,其中UO:0.5:2.5t2-2t+l2t<3提示:用逻辑表达式求分段函数值。提不1:参考例24提木2:对于第1个分段条件表达式OtV1,有以下结果:对于第2、3个分段条件表达式,有类似的结果。于是,可以得到:分段函数值=第1个表达式*第1个分段条件表达式+第2个表达式*第2个分段条件表达式+第3个表达式*第3个分段条件表达式+留意:分段区间是不重叠的。对于在定义区间中任给的变量值,它只满足一个分段条件表达式(值为1),其它不满足(值为0),满足的对应项的值是其表达式的值,不满足的对应项值为0。代入本题得:z4=tA2*(t>=0&&t<1)+(tA2-1)*(t>=1&&t<2)+(tA2+2*t+1)*(t>=2&&t<3)FileEditDebugDesktopVindowHelp0»t=0;»z4=t2*(t>=0t<l)+(t2-l)*(t>=lftt<2)+(t2+2*t+l)*(t>=2t<3)z4=O»t=0.5;»z4=t2*(t>=0&&t<l)+(t2-l)*(t>=l&&t<2)+(t2+2*t+l)*(t>=2&&t<3)z4=O.25»t=l;»z4=t2*(t>=0t<l)+(t2-l)*(t>=lt<2)+(t2+2*t+l)*(t>=2t<3)z4=O»t=l.5;»z4=t*2*(t>=0&&t<l)+(t"2-l)*(t>=l&&t<2)+(t-2+2*t+l)*(t>=2&&t<3)z4=1.25f×»IIOVRe.:接着做下去可以完成本题。若变量取100个值,求对应的函数值,还按这种方法来求做就有问题啦。MATLAB供应了一种简洁的方法:t不是一个个取值,而是把全部值放到t中成一个行向量,表达式自动逐个将t中的值代入表达式计算,得到对应的一组函数值。实现这种功能须要将上面的表达式中的乘方号(八)和乘号(*)前加点(.),即改成(J)和(J),相当于循环,它不同于线性代数中相应的矩阵乘方(八)和乘法(*)运算。)CoBMandVindovfff×:FileEditDebugDesktopWindowHelp»t=0,0.5,1,1.5,2,2,5t=00.511.522.5»24=12.*代>=0&a11)+(12-1).*4>=1&&1<2)+(1/2+2*1+1).*6>=2&&似3)%加上点(.)?OperandstotheIand&&operatorsustbeconvertibletologicalscalarvalues.»%注意:t是标量时“与”用&&,t是数组时要用&。“或”类似。»24=12.*(1=0&1<1)+62-1).*任>=1依2)+&2+2*1+1).*代>=2抬<3)%删去一个&z4=00.2501.25912.25A»I用冒号表达式更简洁:EileEditDebUa11*sktopWindowHelP»t=0:0.5:2.5t=O0.511.522.5»z4=t.2.*(t>=0t<l)+(t.2-l).*(t>=lt<2)+(t.2+2*t+l),*(t>=2t<3)z4=O0.25O1.25912.25A»以下是分解式:')Co三>andTindov0®FileEditDebugDesktopIindowHelp»t=0:0.5:2.5t=O0.511.522.5»t.2ans三OO.2512.2546.25»t>=0ftt<lans=11OOOO»t.2.*(t>0ftt<l)ans二OO.25OOOO»»t.2-lans=-1-O.75O1.2535.25»t>=l&t<2ans三OO11OO»(t.*2-l).*(t>=lftt<2)ans三OOO1.25OOf×»I至此,能理解表达式的计算结果了吗?1.5 对工作空间的操作提示接着显示MATLAB当前工作空间的运用状况并保存全部变量提示1:用到叮嘱who,whos,save,clear,load,请参考教材相关内容。步骤:查看工作空间;保存工作空间;清除工作空间;再查看工作空间;装入工作空间;再查看工作空间。2.1矩阵加、减和数乘运算提示A+6*B和A-B+I(其中I为单位矩阵。留意:如何得到单位矩阵)提示1:3阶单位矩阵用eye(3)或eye(3,3)o4.完成下列数据操作4.1 求100,999之间能被21整除的数的个数提示提示:先利用冒号表达式,再利用find和Iength函数。提示1:步骤:用冒号表达式把100,999之间的整数放在一个向量里(如A);用mod求得一个向量(如B),使A中能被21整除的数在B中对应位置为1,B的其它位置为0;用find求得B中不为0的元素的序号,放入一个向量中(如K);显示A中对应K的元素;%即能被21整除的数用length显示K的元素个数。即能被21整除的数的个数4.2 建立一个字符串向量,删除其中的大写字母提示提示:利用Hnd函数和空矩阵.提示1:利用find函数和空矩阵。留意运用关系运算、逻辑运算。留意!本题中大写字母所在位置是随机的,要用关系运算和逻辑运算,以及find找到它们所在位置的序号。提取2:EiIeEditDebUePeSktoPndKelp»A=,d84AjOBC2,%建立字符串向量,含大写字母A-d84AJ0B,dC2»B=(A>=A,&A<=,Z,)%B是与胴型的向量,A中大写字母的位置,在B中相应取1B=00010010010»%单个字符或字符串用单引号括起来»%每个字符都有编号(ASC口值),字母A到Z是连续编号,使用其编号进行比莪»K=find(B)%取出B中非0元素的序号给KK=4710»A(K)%显示A中由K指明的序号对应的元素值ans=ABC»A(K)=O蜷A中由K指明的序号对应的元素值用空矩阵代替,即删除A=d84j0;d2»AA=d84j0;d2A»|四、教程:第2章MATLAB数据及其运算2.1 MATLAB数据的特点p17矩阵是MATLAB最基本、最重要的数据对象。MATLAB的大部分运算或叮嘱都是在矩阵(复数域上)运算的意义下执行的。标量对应仅含一个元素的矩阵。数值数据双精度数占64位,转换函数double单精度数占32位,转换函数single带符号整数转换函数int8,int16,int32无符号整数转换函数Uint8,Uintl6,Uint32字符数据转换函数char结构体类型(StrUCtUre)单元类型(CeH)逻辑型非0为true,0为false2.2变及其操作2.2.1 变量及赋值1 .变量命名以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。区分字母的大小写。MATLAB供应的标准函数名以及叮嘱名必需用小写字母。2 .赋值语句(1)变量=表达式(2)表达式(值赋给预定义变量ans)其中,表达式是用运算符将有关运算量连接起来的式子,其雉果是一个矩阵。例2.1计算表达式的值p18将的计算结果赋给变量X,然后显示出结果。»x=(5+cos(47*pi180)/(1+sqrt(7)-2*i)X=1.1980+0.6572i其中,Pi和i都是MATLAB预先定义的变量,分别代表Bl周率Tr和虚数单位。3.预定义变量p18表2.1常用的预定义变量及其含义预定义变量含义ans趺认赋值变量eps机器零闽值2.2204e-016Pin近似值Lj虚数单位inf,Inf无穷大,如1/0的结果NaN,nan非数,如0/0,inf/inf的结果nargin函数输入参数个数nargout函数输出参数个数realmax最大正实数realmin最小正实数Iasterr存放最新的错误信息lastwar存放最新的警告信息预定义变量有特定的含义,应尽量避开重新赋值。i=2%对预薮变量重新赋值2*icleari%发原预定义变量2*ians=O+2.0000i2.2.2变量的管理p191 .内存变量的显示及删除显示工作空间中驻留的变量名清单及信息叮嘱:Who%显示变Jt名清单Whos%显示变量名清单及信息删除工作空间中的变量叮嘱:clear变量名工作空间窗口特地用于内存变量的管理。在该窗口中显示全部内存变量的属性。 当选中某些变量后,再单击DeIete按钮,将删除这些变量。 双击变量后,将进入变量编辑器。可以视察变量中的具体元素,也可修改具体元素。 输入校大矩阵时,可接受变量编辑器。2 .内存变量文件用MAT文件可把当前工作空间中的一些有用变量许久地保留下来,扩展名是.mat。MAT文件的生成和装入,常用格式为:save文件名变量名表appendasciiload文件名变量名表ascii 文件名可带路径,不需带扩展名.mat,默认对.mat文件进行操作。 变量名表变量名以空格分隔。省略时,保存或装入全部变量。 -ascii选项使文件以ASCH格式处理,省略时以二进制格式处理。 叩Pend选项使变量追加到MAT文件中。2.2.3数据的输出格式p20用十进制数表示一个常数,可接受日常记数法和科学记数法。一般状况下,内部每一个数据元素都用双精度数表示和存储。设置或变更数据输出格式format叮嘱的格式为:format格式符格式符确定数据的输出格式表2.2限制数据输出格式格式符及含义格式符含义short(默认)小数点后4位,不超过7位有效数字。大于IOoO的实数用5位有效数字的科学记数法long15位有效数字shorte5位有效数字科学记数法longe15位有效数字科学记数法shortg从short和shorte选择最佳方式longg从long和longe选择最佳方式rat近似有理数表示hex十六进制表示+正数、负数、零分别用+、空格表示bank银行格式,元、角、分表示compact输出变量之间无空行loose输出变量之间有空行可用Helpformat查询例输出格式format»4/3%当前输出格式ans=1.3333>>formatlong%15位有效数字形式输出»4/3ans=1.333333333333333>>formatrat%近似有理数表示»4/3ans=4/3>>formatcompact%输出变量之间没有空行»4/3ans=4/3>>formatloose%输出变量之间有空行»4/3ans=4/3>>formatshort%short为默认榆出格式2.3矩阵的表示p21表矩阵操作函数及其含义函数名含义eye单位矩阵ones全1矩阵Iinspace生成行向量sub2ind下标转换成序号ind2sub序号转换成下标size给出矩阵的行数和列数length给出矩阵行数和列数中较大者reshape矩阵重排end预定义变量,某一维末尾下标空矩阵2.3.1矩阵的建立1.干脆输入法从键盘干脆输入矩阵的元素。方法如下:”将矩阵的元素用方括号括起来,输入元素;同一行的元素间用空格或逗号分隔;不同行的元素间用分号(或回车)分隔。例»A=1,2,3;456;7,89A=1234567892 .利用M文件建立矩阵对于比较大且困难的矩阵,可特地建立一个M文件。例2.2利用M文件建立矩阵(1)启动文本编辑器,输入:MYMAT=101,102,103,104,105;201,202,203,204,205;301,302,303,304,305(2)存盘(文件名为mymatrix.m)o(3)在叮嘱窗口中输入mymatrix,即运行该M文件,就建立一个名为MYMAT的矩阵。3 .建立大矩阵(矩阵拼接)大矩阵可由方括号中的小矩阵或向量建立。»A=1,2;3,4A=134»eye(2)ans=1 OO1»ones(2)ans=1111»C=A,eye(2),ones(2),AC=12101112340111342.3.2 冒号表达式用冒号表达式产生行向量,一般格式,e1:e2:e3其中e1为初始值,e2为步长,e3为终止值上限。用Iinspace函数产生行向量。调用格式:linspace(a,b,n)其中a和b是第一个和最终一个元素,n是元素总数。2.3.3 矩阵的拆分1.矩阵元素通过下标引用矩阵的元素,例»A=1,2,3;4,5,6A=123456»A(2,3)ans=6»A(2,2)=22;»AA=1234226»A(4,5)=10;»AA=12300422600OOOOOOOO10接受矩阵元素的序号来引用矩阵元素。元素的序号是相应元素在内存中的排列依次。在MATLAB巴矩阵按列存储,先第一列,再其次列,依次类推。»A=1,2,3;4,5,6A=123456»A(3)ans=2»A(5)ans=3»A(8)?AttemPtedtoaccessA(8);indexOUtOfboundsbecausenumel(八)=6.numel(八)返回A中元素个数。序号(IndeX)及下标(SUbSCriPt)对应。以mn矩阵A为例,矩阵元素A(iJ)的序号为(j1)*m+i°互转换关系用sub2ind和ind2sub函数求得。>>A=ones(3,4)A=%给出矩阵的行数和列数111111111111>>size(八)ans=34>>sub2ind(size(八),1,2)%下标(1,2)转换为序号ans=4>>i,j=ind2sub(size(八),3)%序号转换为下标3j=1>>length(八)%给出矩阵行数和列数中较大者ans=4reshape(A,mj11L在矩阵总元素保持不变的前提下,将矩阵重新排成m×n矩阵。»x=1:1:12;»y=reshape(x,3,4)y=147102581136912»z=reshape(y,2,7)?Errorusing三=>reshapeToRESHAPEthenumberofelementsmustnotchange.2.矩阵拆分(1)利用冒号表达式获得子矩阵已知A为矩阵A(:J)第j列全部元素;A(i,:)第i行的全部元素;A(iJ)第i行、第j列的元素;A(i:i+m,:)第ii+m行的全部元素;A(:,k:k+m)第kk+m列的全部元素;A(i:i+m,k:k+m)第ii+m行内,并在第kk+m列中的全部元素;A(:)将每一列元素堆叠起来,成为一个列向量。end表示某一维的末尾元素下标。A(end,:)最终一行A(:,end)最终一列(2)利用空矩阵删除矩阵的元素给变量X赋空矩阵的语句:×=留恚,X=及CIearX不同:CIear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。2.4MATLAB数据的运算p262.4.1 算术运算1.基本算术运算MATLAB的基本算术运算有:+加-减*乘/右除左除乘方留意,运算是在矩阵意义下进行的。(1)矩阵加减运算假定矩阵A和B,则A+B和A-B实现矩阵的加减运算。运算规则是:若A和B的维数相同,则可以执行矩阵的加减运算,A和B的相应元素相加减。若A及B的维数不相同,将给出错误信息。留意,A、B均不是标量。(2)矩阵乘法若A为mn矩阵,B为np矩阵,则C=A*B为mp矩阵。(3)矩阵除法有两种矩阵除法运算:左除/右除若A矩阵是非奇异方阵,则AB和B/A运算可以实现。AB等效于inv(八)*BB/A等效于B*inv(八)对于含有标量的运算,两种除法运算的结果相同。如3/4和43有相同的值,都等于0.75。又如设a=10.5,25,则a5=5a=2.10005.0000对于矩阵运算,一般ABWBA.(4)矩阵的乘方一个矩阵的乘方运算可表示成Ax要求A为方阵,X为标量。2 .点运算有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*点乘