ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:106.89KB ,
资源ID:4079540      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4079540.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab实验报告55100.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab实验报告55100.docx

1、matlab实验报告55100实 验 报 告 课程名称: 可视化计算机语言 实验项目名称: matlab程序设计 学院: 信息工程学院 专业: 电子信息工程 指导教师: 报告人: 学号: 班级: 实验时间: 实验报告提交时间: 教务部制一、实验目的与要求:1、 熟练掌握matlab的程序流程控制结构。2、 熟悉掌握M文件的结构和函数调用。3、 掌握内联函数和函数句柄的使用。4、 了解程序性能剖析窗口。二、内容和步骤:MATLAB的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB也有各种程序流程控制,文件格式和函数调用的规则,通过对函数的调用就能够组成庞大的程序,完成复杂的功能。1

2、.使用程序流程控制 Fibonacci数列的各元素为:1、1、2、3、5、8、.满足一下关系 F1=1 F2=1 Fn=Fn-1+Fn-2用M函数文件实现,数列的元素个数为输入变量。(1)按M函数文件格式创建文件开头。function f=shiyan0501(n)%SHIYAN0501%Fibonacci数列%n 元素个数%f 构成Fibonacci数列向量% %copyright 2015-11-25(2)用while循环实现程序功能f(1)=1;f(2)=1;i=2;while i10 break else f(i+1)=f(i-1)+f(i); endend当某个元素大于50,程序便退

3、出循环结构当n=10,最后一个元素刚好是大于50的,正好退出循环结构当n=12时,第十个元素对应的f(i)大于50,于是退出循环结构,不再运行f(11),f(12)了。(5)将该.m文件生成P码文件 pcode shiyan0501将shiyan0501.m删除,重新运行该文件夹,结果如下所示:练习:将该M文件函数改为M脚本文件,将数列元素个数通过键盘输入,程序应该如何修改?将M文件函数另存为M脚本文件;在函数前加n=input(please input a num:)便可通过键盘键入文件运行结果如下所示:please input a num:12n = 12ans = 1 1 2 3 5 8

4、 13 21 34 55 892.使用函数调用计算arcsin(x),(1)子函数factorial计算n!子函数factorial计算n!输入参数为n,使用for循环实现的阶乘,输出参数为阶乘。 在matlab界面中选择“file-new-function”命令,创建一个新的函数文件,修改输入输出参数和函数名。function f=factorial(n) % output_args = Untitled7( input_args )%UNTITLED7 此处显示有关此函数的摘要% 此处显示详细说明f=1;for m=1:nf=m*f;(2)子函数cal.子函数cal是计算系数functio

5、n k=cal(n1)%计算系数for m=1:n1 k=factorial(2*n1)/(2(2*n1)*(factorial(n1)2*(2*n1+1);end输入参数n=5运行结果如下图所示: cal(5)ans =0.0224本函数中调用了求阶乘的子函数factorial(3)主程序shiyan0502.求主函数计算arcsinx,输入参数为x,输出参数为arcsinx的计算结果。程序如下所示:function y=shiyan0502(x)%shiyan0502 arcsinxn=1;if abs(x)0.0001 y=y+cal(n)*x(2*n+1); n=n+1; endels

6、e disp(输入错误); y=0;returnend运行结果: y=shiyan0502(0.7)y =0.7754当输入参数不满足条件是退出程序: y1=shiyan0502(2)输入错误y1 = 0练习:如果不使用子函数factorial ,而直接在cal函数中计算阶乘,应如何修改程序。修改cal函数如下所示:function k=cal(n1)%计算系数f=1;f1=1;for m=1:2*n1 f1=m*f1;endfor m=1:n1 f=m*f;endk=f1/(2(2*n1)*f2*(2*n1+1);end调用程序shiyan0502,运行结果如下所示: y=shiyan050

7、2(0.7)y =0.7754运行结果与使用子函数factorial的运行结果一致。(4)使用程序性能剖析。选择菜单view-profile命令;或使用在命令窗口输入profile viewer命令都可以打开程序性能剖析窗口。在程序性能剖析窗口的命令输入栏中输入需要剖析的命令,y=shiyan0502(0.7),然后单击start profiling按钮,查看剖析报告。(5)程序的调试。当有多个函数调用时,由于函数变量的工作空间是独立的,被调用的函数执行结束后变量消失,因此调试时要使用matlab调试器查看运行过程中的变量值。设置断点。在需要查看的程序的地方设置断点, shiyan0502(0

8、.7)K yy = 0.7000K x=0.5x =0.5000在K输入x=0.5即可将x的值从0.7修改为0.5.去除断点,查看结果:ans =0.7236结果与x值为0.7时不一致,当x=0.7时,y =0.7754,由此可知,x的值已被修改。单步运行 shiyan0502(0.7)9 n=n+1;K 按单步运行键:可看到箭头不断的移动:(6)使用函数句柄。在命令窗口使用函数句柄调用函数。 h_shiyan0502=shiyan0502h_shiyan0502 = shiyan0502 y=feval(h_shiyan0502,0.5)y = 0.5236(7)使用全局变量。Matlabe

9、的编程不提倡使用全局变量,本例中的程序主要是为了查看全局变量的概念。将n作为全局变量,子函数factorial不修改,子函数cal程序和主函数shiyan0502修改如下:function y=shiyan0502(x)%shiyan0502 arcsinxglobal n; n=1;if abs(x)0.0001 y=y+cal(n)*x(2*n+1); n=n+1; endelse disp(输入错误); y=0;returnendfunction k=cal(n1)global nfor m=1:n k=factorial(2*n)/(2(2*n)*(factorial(n)2*(2*2

10、*n+1);Endglobal为设置的全局变量,子函数没有输入变量,而用全局变量n传递。在全局变量前设置断点,然后运行程序,当程序运行到断点处停止,接着不断使用单步运行调试,结果如下所示: | | |练习:使用单步运行调试,查看全局变量n的变化,并在工作空间查看n;3、利用泛函命令实现数值分析创建函数shiyan0503实现上述表达式关系。function y=shiyan0503(t)%shiyan0503 y=(sin(t).2.*exp(a*t)-b*abs(t)a=0.1;b=0.5;y=(sin(t).2.*exp(a*t)-b*abs(t);查看该函数的输出波形,如下图所示:利用函

11、数名求零点,在上图中可以看相互在0的附近有2个过零点x1=fzero(shiyan0503,0.5)x2=fzero(shiyan0503,-0.5)运行结果如下所示: shiyan0503_1x1 = 0.5198x2 = -0.5993利用函数句柄求过零点 x1=fzero(shiyan0503,0.5)x1 = 0.5198 x2=fzero(shiyan0503,-0.5)x2 = -0.5993利用函数句柄求极小值,由图可知,极小值有多个,查看其中2个 x1=fminbnd(shiyan0503,0.1,0.7)x1 = 0.2511 x2=fminbnd(shiyan0503,2,

12、5)x2 =3.3233练习:利用函数句柄求-1,1的面积。 x=-1:0.1:1; y=shiyan0503(x); area=trapz(x,y) %用梯形计算积分area =0.0485 area1=quad(shiyan0503,-1,1) %用quad计算积分area1 = 0.0469(2)使用内联函数创建内联函数f a=0.1; b=0.5; f=inline(sin(t).2.*exp(.1*t)-0.5*abs(t),t)f = 内联函数: f(t) = (sin(t).2.*exp(.1*t)-0.5*abs(t)绘制曲线图 t=-10:0.1:10; y=feval(f,

13、t); plot(t,y)求过零点 x1=fzero(f,0.5)x1 =0.5198求极小值 x2=fminbnd(f,0.1,0.7)x2 =0.2511练习:利用内联函数求8附近的极小值x=fminbnd(f,7.9,8.1)x =8.0999x2=fminbnd(f,7.99,8.01)x2 = 8.0099(3)使用字符串创建字符串 g=(sin(x).2.*exp(.1*x)-.5*abs(x)g =(sin(x).2.*exp(.1*x)-.5*abs(x)绘制曲线图 x=-10:0.1:10; y=eval(g,x); plot(x,y)运行程序得到下图:求零点 x1=fzer

14、o(g,0.5)x1 = 0.5198自我练习:(1)编写函数计算输入参数r为圆半径的圆面积和周长。程序如下所示:g=pi*r2k=2*pi*rr=input(请输入圆的半径r:)disp(圆的面积:)y=eval(g,r)disp(圆的周长:)y1=eval(k,r)运行结果如所示:假设输入圆的半径为3g = pi*r2k = 2*pi*r请输入圆的半径r:3r = 3圆的面积:y = 28.2743圆的周长:y1 = 18.8496(2)创建内联函数计算y=sin(r)/r,使用函数句柄调用,并绘制曲线。y=inline(sin(r)./r)y = 内联函数: y(r) = sin(r)./r x=-10:0.1:10; f=feval(y,x);plot(x,f)运行结果如下图所示: 三、实验结论: 通过该实验较为熟练地掌握matlab的一些基本操作,掌握熟练掌握matlab的程序流程控制结构,熟悉掌握M文件的结构和函数调用,掌握内联函数和函数句柄的使用,了解程序性能剖析窗口。指导教师批阅意见:成绩评定: 指导教师签字: 年 月 日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1