1、2015秋2013级MATLAB程序设计实验报告实验一 班级:软件131 姓名:付云雷 学号:132872一、实验目的:1、了解MATLAB程序设计的开发环境,熟悉命令窗口、工作区窗口、历史命令等窗口的使用。2、掌握MATLAB常用命令的使用。3、掌握MATLAB帮助系统的使用。4、熟悉利用MATLAB进行简单数学计算以及绘图的操作方法。二、实验内容:1、启动MATLAB软件,熟悉MATLAB的基本工作桌面,了解各个窗口的功能与使用。图1 MATLAB工作桌面2、MATLAB的常用命令与系统帮助:(1) 系统帮助help:用来查询已知命令的用法。例如已知inv是用来计算逆矩阵,键入help i
2、nv即可得知有关inv命令的用法。lookfor:用来寻找未知的命令。例如要寻找计算反矩阵的命令,可键入 lookfor inverse,MATLAB即会列出所有和关键字inverse相关的指令。找到所需的命令後 ,即可用help进一步找出其用法。(2) 数据显示格式:常用命令: 说明format short 显示小数点后4位(缺省值) format long 显示15位format bank 显示小数点后2位format + 显示+,-,0format short e 5位科学记数法format long e 15位科学记数法format rat 最接近的有理数显示(3) 命令行编辑:键盘上
3、的各种箭头和控制键提供了命令的重调、编辑功能。具体用法如下:-重调前一行(可重复使用调用更早的)-重调后一行-前移一字符-后移一字符home-前移到行首end-移动到行末esc-清除一行del-清除当前字符backspace-清除前一字符(4) MATLAB工作区常用命令:who-显示当前工作区中所有用户变量名 whos-显示当前工作区中所有用户变量名及大小、字节数和类型disp(x) -显示变量X的内容clear -清除工作区中用户定义的所有变量save文件名-保存工作区中用户定义的所有变量到指定文件中load文件名-载入指定文件中的数据3、在命令窗口执行命令完成以下运算,观察workspa
4、ce的变化,记录运算结果。(1) 计算(365-522-70)3(2) area=pi*2.52(3) 已知x=3,y=4,在MATLAB中求z:(4) 利用who,whos命令查看工作空间内的所有变量,并比较两种命令区别。(5) 使用clear命令删除工作空间内的所有变量。提示:MATLAB有一些永久常数(Permanent Constants)如表所示,虽然在工作空间中看不到,但使用者可直接取用。表1.1 MATLAB中常用的变量,常量特殊的变量、常量取 值ans用于结果的缺省变量名pi圆周率的近似值(3.1416)eps数学中无穷小(epsilon)的近似值(2.2204e - 016)
5、inf无穷大,如 1/0 = inf (infinity)NaN非数,如 0/0 = NaN (Not a Number),inf / inf = NaNi,j虚数单位:i = j =(6) 将下面的矩阵赋值给变量m1,在workspace中察看m1在内存中占用的字节数。m1=执行以下命令,观察结果:m1(2,3)m1(11)m1(:,3)m1(2:3,1:3)m1(1,4) + m1(2,3) + m1(3,2) + m1(4,1)(7) 执行命令help abs,查看函数abs的用法及用途,计算abs(3 +4i)。(8) 执行命令:x=0:0.1:6*pi;y=5*sin(x);plot
6、(x,y)(9) 在matlab的命令窗口里完成如下计算,其中t的值分别取-1,0,1,表达式如下:(10) 求方程组的根:(11) 一个多项式的系数向量是p=1 -6 -72 -27,求这个多项式的根并写出多项式。 4、思考题(1) 以下变量名是否合法?为什么?a) x2 合法b) 3col 不合法c) _row 不合法d) For 不合法(2) 求以下变量的值,并在MATLAB中验证。a) a=1:2:5;b) b=a a a;c) c=a+b(2,:)2015秋2013级MATLAB程序设计实验报告实验二 班级:软件131 姓名:付云雷 学号:132872一、实验目的1、掌握矩阵和数组的
7、表示与赋值方法2、了解字符串、结构和单元等数据类型在MATLAB中的使用 3、掌握MATLAB中基本的数值运算,了解基本统计函数的使用4、掌握多项式基本运算以及线性方程组的求解方法二、实验内容1、利用“:”操作符和linspace函数生成数组a=0,6,12,18,24,30,36,42,并将数组a分别转化为4*2和2*4的矩阵。2、在MATLAB中输入矩阵,并使用MATLAB回答以下的问题:(1) 创建一个由A中第2列到第4列所有元素组成的43数组B;(2) 创建一个由A中第3行到第4行所有元素组成的24数组C;(3) 创建一个由A中前两行和后三列所有元素组成的23数组D;(4) 根据A利用
8、单下标方法和双下标方法分别创建向量a=-5 6 15和向量b=6 8 1,并利用向量a和b生成矩阵;(5) 利用“”删除矩阵A的第二行和第三列。3、利用ones()函数和zero()函数生成如下矩阵:4、生成矩阵:(1) 取出所有大于0的元素构成一个向量a(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)。(2) 将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。5、已知,下列运算是否合法,为什么?如合法,写出计算结果?(1)result1=a %合法,将矩阵转置(2)result2=a*b %不合法,a和b
9、矩阵不能相乘(3)result3=a+b %合法,将a和b矩阵对应元素相加(4)result4=b*d %合法,将b和d矩阵相乘(5)result5=b;c*d %合法(6)result6=a.*b %合法,将a和b对应元素相乘(7)result7=a./b %合法,用a除以b中对应元素(8)result8=a.*c %不合法,a和c不能进行.*运算(9)result9=a.b %合法,用b除以a中对应元素(10)result10=a.2 %合法,将a中所有元素平方(11)result11=a2 %不合法,a必须为方阵(12)result11=2.a %合法,将2a(I,j)构成新矩阵的第(I
10、,j)个元素6、已知(1) 求a+b,a*b,a.*b,a/b,a./b,a2,a.2的结果,并观察运算结果。(2) 求c中所有元素的平均值、最大值、中值,并将c中元素按从小到大顺序排列。(3) 解释b(2:3,1,3)的含义,并将生成的数组赋值给d。 得到第二行到第三行中第一列和第三列的元素并构成矩阵。关系运算与逻辑运算7、已知a=20,b=-2,c=0,d=1,计算下列表达式:(1) r1=ab(2) r2=ab&cd(3) r3=a=b*(-10)(4) r4=b|c8、已知(1) 求矩阵A的秩(rank);(2) 求矩阵A的行列式(determinant);(3) 求矩阵A的逆(inv
11、erse);(4) 求矩阵A的特征值及特征向量(eigenvalue and eigenvector)。9、已知多项式f1(x)=2x4-x2+3x+2,f2(x)=3x+2,利用MATLAB进行如下计算:(1) 计算两多项式的乘法和除法;(2) 求多项式f1(x)的根;(3) 分别计算多项式当x=3以及时的值。10、用两种方法求下列方程组的解,并比较两种方法执行的时间。11、建立一个元胞数组,要求第一个元素为44的魔术矩阵,第二个元素为18.66,第三个元素为matlab,第四个元素为等差数列7,9,11,1399。计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个
12、元胞的第10个元素。12、建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。问题是:(1) 如何找到第2个人的分数并显示出来;(2) 如何找到第2个人的每门课程3个阶段的平均分数并显示出来;(3) 所有同学的10门课程的每门课程的平均分如何计算出来?要求放到一个数组里;(4) 找到这个班所有同学的姓名放到一个元胞数组里;13、完成以下操作:(1) 已有str=decision 20 made on 10/20/10,查找字符串中20出现的位置。(2) 有字符串s1=matlabexpress,s2=
13、matlabexcellent,比较两个字符串的前8个字符是否相同,相同输出1,否则输出0。(3) 统计字符串s1=matlabexpress中ex出现的次数,并替换为EX。2015秋2013级MATLAB程序设计实验报告实验三 班级:软件131 姓名:付云雷 学号:132872一、实验目的1、掌握建立和执行M文件的方法。2、掌握选择结构、多分支选择结构程序的编程方法。 3、掌握多种循环结构程序的编程方法。4、掌握定义函数文件和调用函数文件的方法。二、实验内容1、MATLAB M文件的创建与使用。(1) 建立自己工作目录,如D:MATLAB。在File菜单中,单击Set Path菜单项,在弹出
14、对话框中建立目标文件夹,:单击Add Folder按钮,将自己的工作目录D:MATLAB添加到搜索目录之中,按Save按钮保存,如图1。图1 工作目录设置(2) 在M文件编辑器中编制命令行文件。在File菜单中,单击NewM-File,弹出M文件编辑器,如图2:图2 编辑器在编辑器中输入如下命令程序:%求小于2000且为2的整数次幂的正整数。 f(1)=2; k=1; while f(k)1000 f(k+1)=f(k)*2; k=k+1; end f,k调试后,将其以test1.m形式保存在D:MATLAB中。(3) 命令行程序运行。进入命令窗口,键入test1,观察运行结果:(4) 按上述
15、步骤,在在编辑器中输入如下函数文件:function f=tt(n) %求小于任何正整数且为2的整数次幂的正整数。 %c=n(n) %n可取任意正整数。 % %2004年8月。 f(1)=2; k=1; while f(k)v=myvander(2 3 4 5),得,同时生成一些数据测函数。5、分别使用while和for编写命令文件,用循环语句编程计算s值:同时对编写的文件设置断点,观察变量取值的变化情况。6、数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:21310516842163105168421建立命令M文件
16、,完成上述功能,要求显示数字处理过程。7、设计一个学生身高的管理系统,输出身高的基本分为5等:很高、较高、中等、较矮、矮,其中190cm以上为“很高”,180cm,190cm)区间为“较高”,170cm,180cm)为“中等”,1160cm,170cm)为“较矮”,160cm以下为“矮”,要求分别用if语句和switch语句实现8、Fibonacci数组的元素满足Fibonacci规则:ak+2=ak+ak+1,(k=1,2,3,);且a1= a2=1。请设计一段程序,求出该数组中第一个大于10000的元素要求显示的结果为:i=21a(i)=10946或者a(21)=109469、编写一个函数
17、文件and.m,用于求两个输入矩阵的乘积和点乘,然后在命令行窗口中调用该函数,要求:(1) 当两矩阵是尺寸相同的方阵时,返回它们的乘积和点乘。(2) 当两矩阵不是尺寸相同的方阵时,则根据它们的尺寸,分别进行乘积或点乘(3) 当两矩阵的尺寸不能满足乘积或点乘的要求时,则提示“这两个矩阵不能乘” 10、编写一个阶乘函数factorial.m,然后在如下程序中调用该函数,“分别使用for和while语句找出最小的n值,使得n!10100,并求出n!”11、下列程序用来判断一个人的体温是否处于危险状态。调试程序是否正确,如果程序错误指出错误在哪里?并写出正确答案。temp=input(请输入体温: temp = );if temp 36.5disp(体温正常);elseif temp 38.0disp(体温偏高!);elseif temp 39disp(体温高!);end该程序体温范围设置不正确,elseif中的范围应该是相互不会包含的,而此程序则上一条语句的范围包含下一条语句的范围,例如:当输入40时会显示体温正常,12、使用嵌套for循环命令创建下列矩阵: