贵大matlab实验二.docx
- 文档编号:662967
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:11
- 大小:69KB
贵大matlab实验二.docx
《贵大matlab实验二.docx》由会员分享,可在线阅读,更多相关《贵大matlab实验二.docx(11页珍藏版)》请在冰豆网上搜索。
贵大matlab实验二
实验二MATLAB程序设计
一、实验目的
1.掌握利用if语句实现选择结构的方法。
2.掌握利用switch语句实现多分支选择结构的方法。
3.掌握利用for语句实现循环结构的方法。
4.掌握利用while语句实现循环结构的方法。
5.掌握MATLAB函数的编写及调试方法。
二、实验的设备及条件
计算机一台(带有MATLAB7.0以上的软件环境)。
M文件的编写:
启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。
点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正,但如果编写的是函数文件,则需要通过调用的方式执行,可通过CommandWindow进行调用并显示结果。
三、实验内容
1.某公司员工的工资计算方法如下:
(1)工作时数超过120小时者,超过部分加法15%;
(2)工作时数低于60小时者,扣发800元;
(3)其余按每小时84元计发。
试编程按输入的工号和该员工的工时数,计算应发工资(可使用input函数进行输入提示,本题建议可考虑结合结构体来实现)。
2.编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。
function[y]=myfun1(x)
用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时y的值。
3、使用switch结构设计MATLAB程序,通过输入英文星期单词,将其转换成相应的中文,例如输入“Sunday”或者“Sun”,输出“星期天”。
注意输入单词的大小写(可考虑借助upper或lower辅助进行程序设计)。
本题还需注意细胞数组的应用。
4.数论中一个有趣的题目:
任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:
21
3105168421
63105168421
运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
请为关键的Matlab语句填写上相关注释,说明其含义或功能。
5.编写一个函数求向量x中元素的平均值、最大值、最小值、均方根值。
function[m_x,max_x,min_x,rms_x]=myfun2(x)
方均根值(RootMeanSquare)的计算公式为:
用下面数据测试你写的函数:
(1)x=sin(0:
0.01:
6*pi)
(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。
6.根据,求的近似值。
当n分别取100、1000、10000时,结果是多少?
(注意此题不需要重复编程,只需注意n的取值即可)
思考题:
1、语句末尾有分号和无分号,有什么不同?
在编写matlab程序时,是否应该
在每条语句末尾添加分号?
2、设value=10π,在实验报告回答以下命令运行的结果(请在上机之前,先思考以下语句的执行结果)。
(1)disp(['value='num2str(value)]);
(2)disp(['value='int2str(value)]);
(3)fprintf('value=%e\n’,value);
(4)fprintf(‘value=%f\n’,value);
(5)fprintf(‘value=%g\n’,value);
(6)fprintf(‘value=%12.4f\n’,value);
四、实验报告要求(包含预习报告要求和最终报告要求)
1.实验名称
2.实验目的
3.实验设备及条件
4.实验内容及要求
5.实验程序设计
指程序代码。
6.实验结果及结果分析
实验结果要求必须客观,有数据的可以记录数据,没有数据的简单描述实验现象。
结果分析是对实验结果的理论评判。
7.实验中出现的问题及解决方法
8.思考题的回答
五.实验程序设计
第一题
M文件中的函数如下:
function[salary]=pay(m);
%PAY
%计算员工的工资
if(m.time>120)
salary=(m.time-120)*84*0.15+120*84;
elseif(m.time<60)
salary=m.time*84-800;
else
salary=84*m.time;
m
end;
输入员工属性并调用:
>>m.time=input('请输入工作时间m.time=');m.no=input('请输入员工号码m.no=');
请输入工作时间m.time=67
请输入员工号码m.no=37
>>pay(m)
第二题
M文件的函数如下:
functiony=myfun1(x)
%MYFUN1myfun1(x):
给出标量x的值,调用该函数后,返回y的值
k=length(x);
fori=1:
1:
k
if(x(i)<0&x(i)~=-3)
y=x(i)^2+x(i)-6
elseif(x(i)>=0&x(i)<5&x(i)~=2&x(i)~=3)
y=x(i)^2-5*x(i)+6
else
y=x(i)^2-x(i)-1
end;
end;
调用时如下:
>>x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
>>myfun1(x);
第三题
M文件中的函数如下:
functionweek=f(w)
i=upper(w);
switchi
case{'SUNDAY','SUN'}
week='星期日';
case{'SUNDAY','SUN'}
week='星期一';
case{'MONDAY','MON'}
week='星期二';
case{'WEDNESDAY','WED'}
week='星期三';
case{'THURSDAY','THU'}
week='星期四';
case{'FRIDAY','FRI'}
week='星期五';
case{'SATURDAY','SAT'}
week='星期六';
otherwise
week='输入格式不合法';
end
输入星期后调用如下:
>>w=input('请输入星期(格式如:
monDaymonday/MOnday/mon...)=','s');
请输入星期(格式如:
monDaymonday/MOnday/mon...)=friday
>>f(w)
再试试其它非法格式:
>>w=input('请输入星期(格式如:
monDaymonday/MOnday/mon...)=','s');
请输入星期(格式如:
monDaymonday/MOnday/mon...)=sund
>>f(w)
第五题
Myfun2函数如下:
function[m_x,max_x,min_x,rms_x]=myfun2(x)
%求向量x中元素的平均值、最大值、最小值、均方根值
k=length(x);
m_x=mean(x,2);
max_x=max(x,[],2);
min_x=max(x,[],2);
sum1=0;
fori=1:
k
sum1=x(i)^2+sum1;
rms1_x=sqrt(sum1/k);
end
rms_x=rms1_x;
end
调用时如下:
(1)
x=sin(0:
0.01:
6*pi);
[m_x,max_x,min_x,rms_x]=myfun2(x)
(2)
继
(1)后输入
[m_x,max_x,min_x,rms_x]=myfun2(rand(1,200))
第六题
写在m文件中的函数如下:
functiony=f1(n)
%F1求pi的近似值
sum=0;
fori=1:
n
sum=1/i^2+sum;
end
sum=sqrt(6*sum)
end
调用:
f1(100);
f1(1000);
f1(10000);
六.实验结果
第一题
在commandwindow中输入员工属性后调用如下:
第二题
调用和结果如下:
第三题
非法输入时:
第五题
(1),
(2)结果截在一张图里如下
第六题
七.出现的问题及解决办法
1.输入函数input用在function函数中不能传入参数,需由commandwindow输入。
2.当用结构体保存员工属性时,传递给pay函数的参数为结构体m,而不能传递结构体的属性m.time
3.在调用myfun2时若没有指定所有的4个输出,则将只返回第一个输出
思考题:
(1)答:
有分号时,语句执行后在commandwindow中不显示结果;没有分号时,语句执行后会显示相应结果。
并不是在每条语句末尾都要加分号,当要显示语句执行后变量得到的结果时就不加分号,反之就不加。
(2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)