(温馨提示:实验课结束后,请将所有作业(题目、代码、结果)利用word整理成一个完整的实验报告,加上封面,打印,纸质档于18周周一交)
第一次上机作业
目的:
1. 掌握MATLAB各种表达式的书写规则
2. 运行课堂上讲过的例子,熟悉矩阵、表达式的基本操作和运算。
作业:
1. 熟悉matlab集成环境界面。回答以下问题,并操作相关的指令:
(1) 分别写出清除命令窗口和清除变量的指令。 答: clc和clear
(2)在命令行输入命令后,matlab的搜索过程是怎样的? 答: (1)检查该命令对象是不是一个变量。 (2)检查该命令对象是不是一个内部函数。
(3)检查该命令对象是否为当前目录下的程序文件。
(4)检查该命令对象是否为MATLAB搜索路径中其他目录下的M文件。 (3)什么是matlab的当前工作目录?写出两种设置当前工作目录的方法? 答: 就是matlab当前文件读取和存储的默认路径 (1)在当前目录窗口中更改
(2)在MATLAB桌面工具栏中更改
(3)使用cd命令:cd c:\\mydir---将c:\\mydir设置为当前目录 (4)什么是matlab的搜索路径?写出两种设置搜索路径的方法? 答: 指Matlab运行文件时进行搜索的目录。 (1)用path命令设置: (2)用Set Path对话框设置
(5)help命令和doc命令有什么作用,它们有什么区别?
答: help命令:最基本的帮助命令,查询信息直接显示在命令窗口。
doc命令:在帮助窗口中显示HTML帮助文档,显示函数的详细用法及 例子,比help命令更详细。
2. 在matlab中输入下列表达式,并求各表达式的值,显示MATLAB工作空间的使用情况
并用两种方式保存全部变量,变量保存的文件名必须包含自己的学号后四位数: (1)w?2?(1?0.34245?10?6)
w=sqrt(2)*(1+0.34245*10^-6) w =
1.4142
2?a?(2)x?b?c?e2??abc, 其中a=3.5,b=5,c=9.8。 tan(b?c)?a a=3.5;b=5;c=9.8;x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a) x =
6.6186
(2)y?2??[(1?2?4)??(0.8333??4)?],其中??3.32,???7.9
alpha=3.32;beta=-7.9;y=2*pi*alpha^2*[(1-pi/4)*beta-(0.8333-pi/4)*alpha] y =
-128.4271
(3)z?12teln(t?2?21?3i?1?t2),其中t???
?5?0.65?t=[2,1-3i;5,-0.65] t =
2.0000 1.0000 - 3.0000i 5.0000 -0.6500
>> z=0.5*exp(2*t)*log(t+sqrt(1+t^2)) z =
1.0e+004 *
0.0057 - 0.0007i 0.0049 - 0.0027i 1.9884 - 0.3696i 1.7706 - 1.0539i
?1310?0.5?4?573. 已知A???350?4?6?9.54??? ???1) 取出A的第2、4、8、12、10、9个元素构成一个新的矩阵A1,其中A的第2、4
个矩阵构成新矩阵的第一行;第8、12个矩阵构成新矩阵的第二行;第10、9个矩阵构成新矩阵的第三行;
A=[13,10,-0.5;4,-5,7;3,5,0;6,-9.54,4] A =
13.0000 10.0000 -0.5000 4.0000 -5.0000 7.0000 3.0000 5.0000 0
6.0000 -9.5400 4.0000 A1=A([2,4;8,12;10,9])
A1 =
4.0000 6.0000 -9.5400 4.0000 7.0000 -0.5000
将A1的所有元素构成一个行向量;
A2=A1(:)
A2 =
4.0000 -9.5400 7.0000 6.0000 4.0000 -0.5000
>> A2'
ans =
4.0000 -9.5400 7.0000 6.0000 4.0000 -0.5000
?0.7780??2310?41?45?655? 4. 已知A???325032???6?9.54543.14??1) 取出A的前三行构成矩阵B,其前两列构成矩阵C,其右下角3×2子矩阵构成的
矩阵D,B与C的乘积构成矩阵E。
A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14] A =
23.0000 10.0000 -0.7780 0 41.0000 -45.0000 65.0000 5.0000 32.0000 5.0000 0 32.0000 6.0000 -9.5400 54.0000 3.1400 B=A(1:3,:) B =
23.0000 10.0000 -0.7780 0 41.0000 -45.0000 65.0000 5.0000 32.0000 5.0000 0 32.0000 C=A(1:4,1:2)
C =
23.0000 10.0000 41.0000 -45.0000 32.0000 5.0000 6.0000 -9.5400 D=A(2:4,3:4) D =
65.0000 5.0000 0 32.0000 54.0000 3.1400 E=B*C E =
1.0e+003 *
0.9141 -0.2239 1.2080 2.7123 1.1330 -0.2103
2) 分别求E ans = 0 1 0 0 0 1 E&D ans = 1 1 0 1 1 1 E|D ans = 1 1 1 1 1 1 ~E|~D ans = 0 0 1 0 0 0 ?1?2??5. 使用函数,实现方阵A左旋90、右旋270的功能,A???3??4A=[1,4,7,10;2,5,8,11;3,6,9,12;4,7,10,13] A = 1 4 7 10 2 5 8 11 3 6 9 12 4 7 10 13 B=rot90(A) B = 10 11 12 13 7 8 9 10 4 5 6 7 1 2 3 4 C=rot90(A,-3) C = 10 11 12 13 7 8 9 10 4 5 6 7 1 2 3 4 10?5811??。 6912??71013?47 6. 请将矩阵A的第4列所有元素删除,并使用函数将A矩阵转变为一个行向量B,其中 ?1352???A??4317?。 ??9732?? A=[1,3,5,2;4,3,1,7;9,3,7,2] A = 1 3 5 2 4 3 1 7 9 3 7 2 A(:,[4])=[] A = 1 3 5 4 3 1 9 3 7 第二次上机作业 准备&目的: 1.掌握MATLAB各种表达式的书写规则 2.运行第二章课堂上讲过的例子,熟悉矩阵、表达式的基本操作和运算,掌握字符串、单元矩阵和结构矩阵的相关内容。 作业: 1.继续完成第一次上机实验未完成的作业。 ??15?4??83?1???,B??253?,求下列表达式的值,并注意第(2) 782.已知A?0(3)???????3617????320??题表达式的结果有何特点: (1)A?6B、A?B?I(其中I为单位阵); A=[-1,5,-4;0,7,8;3,61,7] A = -1 5 -4 0 7 8 3 61 7 >> B-[8,3,-1;2,5,3;-3,2,0] B=[8,3,-1;2,5,3;-3,2,0] B = 2 8 3 -1 2 5 3 -3 2 0 (1)A+6*B ans = 47 23 -10 12 37 26 -15 73 7 I=eye(3,3) I = 1 0 0 0 1 0 0 0 1 A^2-B+I ans = -18 -217 17 22 533 109 21 867 526 (2)A*B、A.*B、B*A、B.*A; A*B ans = 14 14 16 -10 51 21 125 328 180 A.*B ans = -8 15 4 0 35 24 -9 122 0 B*A ans = -11 0 -15 7 228 53 3 -1 28 B.*A ans = -8 15 4 0 35 24 -9 122 0 (3)A/B、B\\A、A./B、B.\\A; A/B ans = 1.2234 -0.9255 2.9787 -0.9468 2.3511 -0.9574 4.6170 3.8723 13.8936 B\\A ans = -0.5106 -8.6170 -1.1277 0.7340 17.5745 1.8085 -0.8830 -21.2128 0.4043 A./B Warning: Divide by zero. ans = -0.1250 1.6667 4.0000 0 1.4000 2.6667 -1.0000 30.5000 Inf B.\\A Warning: Divide by zero. ans = -0.1250 1.6667 4.0000 0 1.4000 2.6667 -1.0000 30.5000 Inf (4)[A, B]、[A([1 3],:);B^2]。 [A,B] ans = -1 5 -4 8 3 -1 0 7 8 2 5 3 3 61 7 -3 2 0 [A([1 3],:);B^2] ans = -1 5 -4 3 61 7 73 37 1 17 37 13 -20 1 9 3.产生均值为3,方差为1 的5阶正态分布的随机方阵。 A=3+sqrt(1)*randn(5) A = 2.5674 4.1909 2.8133 3.1139 3.2944 1.3344 4.1892 3.7258 4.0668 1.6638 3.1253 2.9624 2.4117 3.0593 3.7143 3.2877 3.3273 5.1832 2.9044 4.6236 1.8535 3.1746 2.8636 2.1677 2.3082 4.建立一个字符串向量(要求字符串向量中必须包含自己的姓名,大小写均可),删除其中的大写字母。并统计小写字母的个数。 A='Ma Feiyue' A = Ma Feiyue >> B=find(A>='A'&A<='Z') B = 1 4 >> A(:,[1,4])=[] A = a eiyue C=find(A>='a'&A<='z') C = 2 5 6 7 8 9 >> length(C) ans = 6 5.分别用两种方法建立一个结构矩阵和一个单元矩阵来存储自己班上5名同学的基本情况数据(其中1名同学必须是自己,另外一名同学必须是女生),每名学生的数据包括学号、姓名、专业和6门课程的成绩。并查询自己的所有信息以及女生的成绩。然后将所有同学的成绩删掉。 >> s={20131597 'dupan' 'jixie' [99 98 97 96 95 95];20131596 'dsq' 'jixie' [99 98 97 96 95 95];20131610 'wangmenglu' 'jixie' [99 98 97 96 95 95];20131595 'caijingyu' 'jixie' [99 98 97 96 95 95];20131599 'fengfeng' 'jixie' [99 98 97 96 95 95];20131621 'zhougang' 'jixie' [99 98 97 96 95 95]} >> s([1,3],:) ans = [20131597] 'dupan' 'jixie' [1x6 double] [20131610] 'wangmenglu' 'jixie' [1x6 double] s = [20131597] 'dupan' 'jixie' [1x6 double] [20131596] 'dsq' 'jixie' [1x6 double] [20131610] 'wangmenglu' 'jixie' [1x6 double] [20131595] 'caijingyu' 'jixie' [1x6 double] [20131599] 'fengfeng' 'jixie' [1x6 double] [20131621] 'zhougang' 'jixie' [1x6 double] >> a(1).name='dupan'; a(1).xuehao=20131597; a(1).zhuanye='jixie';a(1).grade=[99 99 99 99 99 99]; >> a(2).name='dongsiqing'; a(2).xuehao=20131595; a(2).zhuanye='jixie';a(2).grade=[99 99 99 99 99 99]; >> a(3).name='caijingyu'; a(3).xuehao=20131596; a(3).zhuanye='jixie';a(3).grade=[99 99 99 99 99 99]; >> a(4).name='fengfeng'; a(4).xuehao=20131598; a(4).zhuanye='jixie';a(4).grade=[99 99 99 99 99 99]; >> a(5).name='wangmenglu'; a(5).xuehao=20131610; a(5).zhuanye='jixie';a(5).grade=[99 99 99 99 99 99]; >> a(6).name='zhougang'; a(6).xuehao=20131621; a(6).zhuanye='jixie';a(6).grade=[99 99 99 99 99 99]; a(1) ans = xuehao: 50131597 name: 'dupan' zhuanye: 'jixie' grade: [99 99 99 99 99 99] a(5) ans = xuehao: 20131610 name: 'wangmenglu' zhuanye: 'jixie' grade: [99 99 99 99 99 99] 6.列出第二章课堂上出现过的所有函数,知道它们的作用并试着调用这些函数。 7.分析脚本M文件及函数M文件的区别。 答: (1)脚本M文件没有输入参数,也不返回输出参数,而函数M文件可以带参数,也可以返回输出参数; (2)脚本M文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数M文件中定义的变量为局部变量,当函数M文件执行完毕时,这些变量被消除; (3)脚本M文件可以直接运行,在MATLAB命令窗口中输入命令文件的名字,就会顺 执行命令文件中的命令,而函数M文件不能直接运行,而要用函数调用的方式运行。 第三次上机作业 准备&要求: 1、 运行课件第三章及课本第四章讲过的例子,掌握Matlab的流程控制语句、函数及脚本文 件的编程、调试方法。 2、 本次作业要求全部写M文件; 3、 题目要求未明确要求写脚本文件还是函数文件的,学生自己决定是写脚本文件还是函数 文件。只要能够实现要求。 作业: 1.继续完成第一次及第二次上机实验未完成的作业。 2.编写函数文件,实现从键盘输入一个3位整数,将它反向输出。如639,输出为936。并调用该函数,输入自己的学号后三位数,输出结果。 function y=func(x) a=fix(x/100); b=fix((x-a*100)/10); c=rem(x,10); y=a+b*10+c*100; y=func(547) y = 745 3.求分段函数的值。 ?x2?x?6, x?0且x??3?2y??x?5x?6, 0?x?5且x?2及x?3 ?x2?x?1, 其它?用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5时的值。 x=input('please input:'); if x<0&x~=-3 y=x^2+x-6; elseif 0<=x&x<5&x~=2&x~=3 y=x^2-5*x+6; else y=x^2-x-1; end y 请输入x的值:-5 y = 14 请输入x的值:-3 y = 11 请输入x的值:1 y = 2 请输入x的值:2 y = 1 请输入x的值:2.5 y = -0.2500 4.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。 要求:分别用if语句和switch语句实现。 ①if语句:x=input('please input:'); if x>=90&x<=100 disp('A'); elseif x>=80&x<=89 disp('B'); elseif x>=70&x<=79 disp('C'); elseif x>=60&x<=69 disp('D'); else disp('E'); end ②switch语句:point=input('please input:') switch fix(point/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case num2cell(0:5) disp('E'); end 5.某公司员工的工资计算方法如下: 1)工作时数超过120小时者,超过部分加发15%; 2)工作时数低于60小时者,扣发700元; 3)其余按每小时84元计发。 试编程按输入的工号和该号员工的工时数,计算应发工资。 x=input('please input hour:') if x>120 y=120*84+(x-120)*84*1.15; elseif x<60 y=84*x-700; else y=84*x; end y 第四次上机作业 准备&要求: 1.运行课件第三章及课本第四章讲过的例子,掌握Matlab的流程控制语句、函数及脚本文件的编程、调试方法。 2.本次作业要求全部写M文件; 3.题目要求未明确要求写脚本文件还是函数文件的,学生自己决定是写脚本文件还是函数文件。只要能够实现要求。 作业: 1.继续完成第一次、第二次及第三次上机实验未完成的作业。 2.分别编写脚本文件,实现以下要求: 1) 求[100,999]之间能被21整除的个数。 n=0; for m=100:999 y=rem(m,21); if y==0 n=n+1; end end n n = 43 2) 用magic(6)产生一矩阵,用至少两种方法求解其所有元素的和。(提示:1、for循环; 2、sum函数) 1、for循环:m=magic(6); a=0; for n=1:36 a=a+m(n); end a m = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 y = 666 2、sum语句:m=magic(6) a=0; n=1:36; a=m(n); y=sum(a); y m = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 y = 666 3.定义一个函数文件,求 ?ii?1nm,要求在函数文件中包含能够通过help查询到的说明,说明 里面必须有自己的名字及学号。然后调用该函数文件求 function y=func(i,m,n) %name mafeiyue %xuehao 1547 y=0; for s=1:n y=y+i^m; i=i+1; end 1的值。 k?k????kk?1k?1k?121005010 y=func(1,1,100)+ func (1,2,50)+ func (1,-1,10) y = 4.7978e+004 sin(x?1.7)ln4.已知y???x,当x取-3.0,-2.9,-2.8,…,2.8,2.9,3.0时, 21?cos(x?1.7)1) 求各点的函数值; ①for x=-3.0:0.1:3.0; y=(sin(x+1.7))*log((pi+x)/2)/(1+cos(x+1.7)); disp(y); end 2) 求这些数据的平均值; ② a=0; b=0; for x=-3.0:0.1:3.0; y=(sin(x+1.7))*log((pi+x)/2)/(1+cos(x+1.7)); a=a+y; b=b+1; end c=a/b; c c = 0.1616 5. 根据 ?26?1111???...?,求?的近似值。当n分别取100、1000、10000时,结2222123n果是多少?(要求:分别用循环结构和向量运算来实现) function y=func(n) s=0; m=1; for i=1:n s=s+1/(m^2); m=m+1; end y=sqrt(6*s); >> func(100) ans = 3.1321 >> func(1000) ans = 3.1406 >> func(10000) ans = 3.1415 6. 已知n=1时,f1=1;n=2时,f2=0;n=3时,f3=1;n>3时,fn=fn-1 -2fn-2+ fn—3; 求f1~ f100中,最大值、最小值以及各数之和。 f(1)=1; f(2)=0; f(3)=1; for n=4:100 f(n)=f(n-1)-2*f(n-2)+f(n-3); end MAX=max(f) MIN=min(f) SUM=sum(f) MAX = 4.3776e+11 MIN = -8.9941e+11 SUM = -7.4275e+11 百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库Matlab实验题目与答案在线全文阅读。
相关推荐: