版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五 M文件和MATLAB程序设计一、实验目的matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。1掌握M文件的使用方法。2掌握if语句和switch语句的使用3. 掌握循环语句的使用4. 通过练习理解MATLAB编程方法。二、实验原理1m文件 用matlab语言编写的程序,称为m文件。M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。区别? 2程序控制结构1) 顺序
2、结构2) 选择结构(1) if语句 a) 单分支if语句 b) 双分支if语句 c) 多分支if语句(2) switch 语句(3) try语句3) 循环结构(1) for 语句(2) while语句(3) break语句、continue语句、return使用,区别?3函数文件function 输出形参表函数名(输入形参表)注释说明部分函数体语句三、实验要求1首先上机练习PPT中各种流程控制语句的有关实例。2然后上机练习下面的实验习题。 四、实验习题 1数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:2®
3、13®10®5®16®8®4®2®16®3®10®5®16®8®4®2®1运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。%classic "3n+1" problem from number theory.while 1 n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1 if rem(n
4、,2)=0 n=n/2; else n=3*n+1; end a=a,n; end a endEnter n,negative quits:3a = 3 10 5 16 8 4 2 12 编程求满足的最小m值。 a=0; i=1; while (a<10000) a=a+pow2(i); i=i+1; end m=i-1; m13 3 编写一个函数,计算下面函数的值,给出x的值,调用该函数后,返回y的值。function y=myfun1(x)选择一些数据测试你编写的函数。 function y=myfun1(x) if x<=0 y=sin(x); elseif x>0&a
5、mp;x<=3 y=x; elseif x>3 y=-x+6;end运行结果:>> y=myfun1(-pi/2)y = -1>> y=myfun1(0)y = 0>> y=myfun1(2)y = 2>> y=myfun1(4)y = 24 用如下迭代公式求,a的值分别为:3,17,113。迭代的终止条件为,迭代初值,迭代次数不超过100次。分别对迭代结果和准确值进行比较,并统计迭代次数。迭代公式:function x, n=sqrt_a(a)x=1.0;for k=1:100 m=x; x=x/2+a/(2*x); if abs(
6、x-m)<=10(-5) break endendx;n=k;s=(x-sqrt(a);if s<=10(-5) disp('正确');else disp('错误');end下面调用举例:运行结果:>> x ,n=sqrt_a(3)正确x = 1.7321n = 5>> x, n=sqrt_a(17)正确x = 4.1231n = 6>> x,n=sqrt_a(113)正确x = 10.6301n = 85定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。程序设计:function
7、 e ln s c=num(x)e=exp(x)ln=log(x)s=sin(x)c=cos(x)end运行结果:>> num(5i)e = 0.2837 - 0.9589iln = 1.6094 + 1.5708is = 0 +74.2032ic = 74.2099ans = 0.2837 - 0.9589i6 设 f(x)=,编写一个MATLAB函数文件fx.m,使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。程序设计:函数文件fx.m:function A=fx(x) A=1./(x-2).2+0.1)+1./(x-3).4)+0.01)end调用fx.m的命令
8、文件:>> A=fx(1 2;2 3;4 3)运行结果:A = 0.9716 10.9901 10.9901 100.9091 1.2340 100.9091 7 已知y=当f(n)=n+10ln(+5)时,求y的值。程序设计:函数文件fn.m:function x=fn(n) x=n+10*log(n2+5)end调用fn.m的命令: y=fn(40)/(fn(30)+fn(20)运行结果:y =0.63908将下列脚本式m文件改写成函数式m文件: (1)输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为
9、其他字符则原样输出。c=input('请输入一个字符','s'); %a是字符,'a'是字符串if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'); %加32elseif c>='a'& c<='z' disp(setstr(abs(c)- (abs('a')-abs('A');elseif c>='0'
10、;& c<='9' disp(abs(c)-abs('0');else disp(c);end %必须与if配对使用编写一个函数式m文件,实现程序的功能c=input('请输入一个字符','s');Function M=disp(c);if c>='A' & c<='Z'M=setstr(abs(c)+abs('a')-abs('A')elseif c>='a'& c<='z'M=s
11、etstr(abs(c)- (abs('a')-abs('A')elseif c>='0'& c<='9'M=abs(c)-abs('0')end(2)某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price<200 没有折扣 200price<500 2%折扣 500price<1000 5%折扣 1000price<2500 10%折扣 2500price<5000 25%折扣 5000price 50%折扣输入所售商品的价格,
12、求其实际销售价格。程序如下:price=input('请输入商品价格');switch fix(price/100) %向零的方向取整 case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=2/100; case num2cell(5:9) %价格大于等于500但小于1000 %为简便采用元胞数组 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=10/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=
13、25/100; otherwise %价格大于等于5000 rate=50/100; end price=price*(1-rate) %输出商品实际销售价格编写一个函数式m文件,计算顾客实际付款数目。 Function price=f(rate)switch fix(price/100) case 0,1 rate=0; case 2,3,4 rate=2/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=10/100; case num2cell(25:49) rate=25/100; otherwise rate=
14、50/100;Price=price*(1-rate) end9一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。程序如下: for m=100:999 m1=fix(m/100); %求m的百位数字 m2=fix(m-m1*100)/10); %求m的十位数字 m3=m-m1*100-m2*10; %求m的个位数字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end编写一个函数式m文件,来判断一个三位数是不是水仙花数。 Function m=f(Mn) for m=100:999 m1=fix(m/100); m2=fi
15、x(m-m1*100)/10); m3=m-m1*100-m2*10; if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end10从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。程序如下:sum=0; %用于存放和n=0; %用于统计输入的数的个数val=input(Enter a number :); %在循环体外初始while (val=0) sum=sum+val; n=n+1; val=input(Enter a number :); 若无此句只能输入一个数endif (n > 0) sum mean=sum/nEnd改写成M文件Function mean=fn(n)sum=0; n=0; val=input(Enter a number :); while (val=0) sum=sum+val; n=n+1; val=input(Enter a number :); if (n > 0) sum mean=sum/nend5、 实验心得 通过本次实验,我了解了MATLAB的工作模式和M文件的构成规则,了解了命令M文件和函数M文件的异同。会MATLAB的M文件的创建与修改,会使用函数句柄调用函数,会运用顺序结构、循环结构和分支结构进行计算机编程。会控制MATLA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 14287.9-2026电气火灾监控系统第9部分:探测绝缘性能式电气火灾监控探测器
- 出差为何不算考勤制度
- 小学控辍保学考勤制度
- lee门店考勤制度
- 城管严格遵守考勤制度
- 工厂保洁考勤制度
- 养生门店考勤制度
- 汽车销售顾问面试常见问题与解析
- 企业财务制度及报表分析手册
- 国有企业高管薪酬福利制度面试解析
- 《文秘实务》全套教学课件
- 风电项目道路施工交底模板
- 五金仓库管理培训课件
- 实验室改造汇报
- 2025-2026学年人教版数学七年级上册暑期计算题自学练习(含解析)
- 2023年高考历史真题新课标卷及解析
- 夏季奥林匹克“丁一杯”数学竞赛省级选拔赛四年级试题(B)卷(含解析)2025年浙江省
- 框架协议管理办法
- 寒假作业的数学试卷
- 2025-2030年中国太阳能光伏发电行业市场深度调研及前景趋势与投资研究报告
- 驾校教练车承包协议
评论
0/150
提交评论