实验五M文件和MATLAB程序设计.docx
- 文档编号:7341535
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:11
- 大小:34.29KB
实验五M文件和MATLAB程序设计.docx
《实验五M文件和MATLAB程序设计.docx》由会员分享,可在线阅读,更多相关《实验五M文件和MATLAB程序设计.docx(11页珍藏版)》请在冰豆网上搜索。
实验五M文件和MATLAB程序设计
实验五M文件和MATLAB程序设计
一、实验目的
matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。
1.掌握M文件的使用方法。
2.掌握if语句和switch语句的使用
3.掌握循环语句的使用
4.通过练习理解MATLAB编程方法。
二、实验原理
1.m文件
用matlab语言编写的程序,称为m文件。
M文件根据调用方式的不同分为两类,命令文件(Scriptfile)和函数文件(Functionfile)。
区别?
2.程序控制结构
1)顺序结构
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→1
3→10→5→16→8→4→2→1
6→3→10→5→16→8→4→2→1
运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
%classic"3n+1"problemfromnumbertheory.
while1
n=input('Entern,negativequits:
');
ifn<=0
break
end
a=n;
whilen>1
ifrem(n,2)==0
n=n/2;
else
n=3*n+1;
end
a=[a,n];
end
a
end
Entern,negativequits:
3
a=
3105168421
2.编程求满足
的最小m值。
a=0;
i=1;
while(a<10000)
a=a+pow2(i);
i=i+1;
end
m=i-1;
m
13
3.编写一个函数,计算下面函数的值,给出x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
选择一些数据测试你编写的函数。
functiony=myfun1(x)
ifx<=0
y=sin(x);
elseifx>0&x<=3
y=x;
elseifx>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=
2
4.用如下迭代公式求
,a的值分别为:
3,17,113。
迭代的终止条件为
,迭代初值
迭代次数不超过100次。
分别对迭代结果和准确值进行比较,并统计迭代次数。
迭代公式:
function[x,n]=sqrt_a(a)
x=1.0;
fork=1:
100
m=x;
x=x/2+a/(2*x);
ifabs(x-m)<=10^(-5)
break
end
end
x;
n=k;
s=(x-sqrt(a));
ifs<=10^(-5)
disp('正确');
else
disp('错误');
end
下面调用举例:
运行结果:
>>[x,n]=sqrt_a(3)
正确
x=
1.7321
n=
5
>>[x,n]=sqrt_a(17)
正确
x=
4.1231
n=
6
>>[x,n]=sqrt_a(113)
正确
x=
10.6301
n=
8
5.定义一个函数文件,求给定复数的指数、对数、正弦和余弦,并在命令文件中调用该函数文件。
程序设计:
function[elnsc]=num(x)
e=exp(x)
ln=log(x)
s=sin(x)
c=cos(x)
end
运行结果:
>>num(5i)
e=
0.2837-0.9589i
ln=
1.6094+1.5708i
s=
0+74.2032i
c=
74.2099
ans=
0.2837-0.9589i
6.设f(x)=
,编写一个MATLAB函数文件fx.m,使得调用f(x)时,x可用矩阵代入,得出的f(x)为同阶矩阵。
程序设计:
函数文件fx.m:
functionA=fx(x)
A=1./((x-2).^2+0.1)+1./(((x-3).^4)+0.01)
end
调用fx.m的命令文件:
>>A=fx([12;23;43])
运行结果:
A=
0.971610.9901
10.9901100.9091
1.2340100.9091
7.已知y=
当f(n)=n+10ln(
+5)时,求y的值。
程序设计:
函数文件fn.m:
functionx=fn(n)
x=n+10*log(n^2+5)
end
调用fn.m的命令:
y=fn(40)/(fn(30)+fn(20))
运行结果:
y=
0.6390
8.将下列脚本式m文件改写成函数式m文件:
(1)输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。
c=input('请输入一个字符','s');%a是字符,'a'是字符串
ifc>='A'&c<='Z'
disp(setstr(abs(c)+abs('a')-abs('A')));%加32
elseifc>='a'&c<='z'
disp(setstr(abs(c)-(abs('a')-abs('A'))));
elseifc>='0'&c<='9'
disp(abs(c)-abs('0'));
else
disp(c);
end%必须与if配对使用
编写一个函数式m文件,实现程序的功能
c=input('请输入一个字符','s');
FunctionM=disp(c);
ifc>='A'&c<='Z'
M=setstr(abs(c)+abs('a')-abs('A'))
elseifc>='a'&c<='z'
M=setstr(abs(c)-(abs('a')-abs('A')))
elseifc>='0'&c<='9'
M=abs(c)-abs('0')
end
(2)某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200没有折扣
200≤price<5002%折扣
500≤price<10005%折扣
1000≤price<250010%折扣
2500≤price<500025%折扣
5000≤price50%折扣
输入所售商品的价格,求其实际销售价格。
程序如下:
price=input('请输入商品价格');
switchfix(price/100)%向零的方向取整
case{0,1}%价格小于200
rate=0;
case{2,3,4}%价格大于等于200但小于500
rate=2/100;
casenum2cell(5:
9)%价格大于等于500但小于1000
%为简便采用元胞数组
rate=5/100;
casenum2cell(10:
24)%价格大于等于1000但小于2500
rate=10/100;
casenum2cell(25:
49)%价格大于等于2500但小于5000
rate=25/100;
otherwise%价格大于等于5000
rate=50/100;
end
price=price*(1-rate)%输出商品实际销售价格
编写一个函数式m文件,计算顾客实际付款数目。
Functionprice=f(rate)
switchfix(price/100)
case{0,1}
rate=0;
case{2,3,4}
rate=2/100;
casenum2cell(5:
9)
rate=5/100;
casenum2cell(10:
24)
rate=10/100;
casenum2cell(25:
49)
rate=25/100;
otherwise
rate=50/100;
Price=price*(1-rate)
end
9.一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。
输出全部水仙花数。
程序如下:
•form=100:
999
m1=fix(m/100);%求m的百位数字
•m2=fix((m-m1*100)/10);%求m的十位数字
•m3=m-m1*100-m2*10;%求m的个位数字
•ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
•disp(m)
•end
•end
编写一个函数式m文件,来判断一个三位数是不是水仙花数。
Functionm=f(Mn)
•form=100:
999
m1=fix(m/100);
•m2=fix((m-m1*100)/10);
•m3=m-m1*100-m2*10;
•ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3
•disp(m)
•end
•end
10.从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。
程序如下:
sum=0;%用于存放和
n=0;%用于统计输入的数的个数
val=input(‘Enteranumber:
’);%在循环体外初始
while(val~=0)
sum=sum+val;
n=n+1;
val=input(‘Enteranumber:
’);若无此句只能输入一个数
end
if(n>0)
sum
mean=sum/n
End
改写成M文件
Functionmean=fn(n)
sum=0;
n=0;
val=input(‘Enteranumber:
’);
while(val~=0)
sum=sum+val;
n=n+1;
val=input(‘Enteranumber:
’);
if(n>0)
sum
mean=sum/n
end
5、实验心得
通过本次实验,我了解了MATLAB的工作模式和M文件的构成规则,了解了命令M文件和函数M文件的异同。
会MATLAB的M文件的创建与修改,会使用函数句柄调用函数,会运用顺序结构、循环结构和分支结构进行计算机编程。
会控制MATLAB的程序流,熟悉了应用程序设计的基本步骤。
能对文件进行简单操作,会调试和优化所设计的程序。
对应用程序接口的设计也有所了解。
MATLAB语言被称为第四代编程语言,程序简洁、可读性很强,而且调试十分容易。
它是MATLAB重要组成部分。
通过这次试验我已经对MATLAB的工作模式有一个大致的了解,并掌握如何创建M文件,包括命令文件和函数文件。
熟练地掌握MATLAB的程序设计流程和程序设计的基本结构,并能初步设计一些简单的能解决实际问题的程序。
实验成绩:
________________
实验日期和地点:
东港学院
实验指导教师:
宁伟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验五 M文件和MATLAB程序设计 实验 文件 MATLAB 程序设计