实验六 M函数文件编程
数学实验第三章M文件

练习与思考题
1.叙述古希腊三大难题之一的化圆为方问题,并用实验
数据显示误差。
2. 用一句话说明循环控制语句的特点。
3.说明for循环while循环语句的相同和不同之处。
4.修改“试商法判断素数”的程序,产生100以内的
全部素数。
5.用help命令获取primes的使用方法,用求素数函 数primes()产生100以内的全部素数。
例2.1 将地球模型取为半径为R=6400(km) 的球体,计算高度为1万公里的地球同步卫 星对地面的覆盖率 在编辑窗口编写文件 planet.m 在命令窗口键入 planet 结果显示: ans = 30.4878
R=6400; S0=4*pi*R*R; d=10000; S=2*pi*R*R*d/(R+d); S/S0*100
例2.11、分析函数性质
1 1 f ( x) 6 2 2 ( x 0.3) 0.01 ( x 0.9) 0.4
编写函数文件 function y=h1(x) y = 1 ./ ((x-.3).^2 + .01) + 1 ./ ((x-.9).^2 + .04) - 6;
存盘后,回到MATLAB命令窗口 fplot(‘h1’,[0, 2]) grid
值得指出的是,并不是所有函数的定义都一定要用文件 实现。对于一个表达式比较简单的函数可以使用内嵌函 数来实现。使用格式为: f=inline('表达式') 上面格式中,f是函数名,函数自变量根据表达式2)*pi; x=sin(t);y=cos(t); z=cos(2*t); plot3(x,y,z,'b-',x,y,z,'bd')
例2.6巴拿马草帽
MATLAB-程序设计-M文件建立

1、先建立函数M文件fun2.m来定义函数f(x) function f=fun2(x) 1 else if x<=0
f=x^3 else
f=2*x end end
2、再在MATLAB命令窗口输入fun2(2),fun2(0.5), fun2(-1)即可.
MATLAB入门
程序设计
M文件
MATLAB的内部函数是有限的,有时为了研究 某一个函数的各种性态,需要为MATLAB定义新函 数,为此必须编写函数文件. 函数文件是文件名后 缀为M的文件,这类文件的第一行必须是一特殊字 符function开始,格式为:
function 因变量名=函数名(自变量名) 函数值的获得必须通过具体的运算实现,并赋 给因变量.
2x x 1
1、编写函数M文件 function f=fun1(x) if x>1
f=x^2+1 end if x<=1
f=2*x end
2、在MATLAB命令窗口输入fun1(2),fun1(-1)即可.
2) 有两个选择的一般形式是: if (expression1) {commands1} else {commands2} end
例: 设银行年利率为11.25%.将10000元钱存入银行, 问多长时间会连本带利翻一番?
money=10000; years=0; while money<20000
years=years+1; money=money*(1+11.25/100); end years money
运行结果:
years =7 money = 2.1091e+004
3. if-else-end结构
(1)有一个选择的一般形式是: if (expression) {commands} end
实验6 函数文件实现MATLAB程序设计

函数文件实现 MATLAB 的程序设计
实验六
函数文件实现 MATLAB 的程序设计
一、 实验目的:掌握 MATLAB 编程语言的基本控制结构和控制转移语句, 学会用函数文件实现 MATALB 程序设计。 二、 本实验的重点内容:函数文件是另一种格式的 M 文件, 它是 MATLAB 程序设计的主流。一般情况下都使用函数文件格式编程。 1、 编写函数文件的步骤: 1)从 MATLAB 主窗口的 File 菜单中选择 New 菜单项,再选择 M-file 命 令,屏幕上将出现 MATLAB 文本编辑器窗口。其窗口名为 Untitled, 用户可以在空白窗口中编写程序。 2)点击调试工具条保存图标,在弹出的“保存为”对话框中,选择保存文 件夹,键入新编文件名,例如 program.m, (这里的文件名必须与函数 名相同)点击保存键,就完成了文件的保存,将其称为 M 文件。 2、 函数 m 文件的格式: function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段 3、 特定规则: 1)函数 m 文件— 需要输入变量,返回输出变量 2)函数 m 文件第一行必须以单词 function 作为引导词,必须遵循如下 形式: function <因变量>=<函数名>(<自变量>) 3)m 文件的文件名必须是<函数名> .m。 4)程序中的变量均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。 4、 M 文件的程序结构(函数文件又称为可调用的 M 文件) 1)顺序结构 顺序结构有两个程序模块串接构成,一个程序模块可以是一条语句、一 段程序、一个函数等,即依次顺序执行程序的各条语句; ①从键盘输入数据, 则可以使用 input 函数来进行, 该函数的调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。
m文件程序设计

m⽂件程序设计⼀、实验⽬的1. 通过练习理解matlab编程⽅法;2. 掌握分⽀结构程序设计思路;3. 掌握循环结构程序设计思路。
⼆、实验环境1. 计算机2. matlab7.x三、实验说明1. 熟悉matlab7.x运⾏环境,正确操作,认真观察;2. 实验学时:2学时;3. 学会使⽤help;4. 编写程序前先写出程序的流程图框架;5. ⾃主编写调试程序直到正确为⽌,必要时参考相关资料,;6. 保存整理实验结果,提交实验报告。
四、实验内容1. 输⼊⼀个百分制成绩,要求输出成绩等级为:A、B、C、D、E,其中90-100为A;80-89为B;70-79为C;60-69为D;60以下为E1)⽤if或switch语句实现;2)输⼊百分制成绩后要判断成绩的合理性,对不合理的成绩要输出出错信息提⽰,⽐如:输⼊成绩不能⼤于100。
3)程序保存名为sy3加上本⼈学号2.某公司员⼯的⼯资计算⽅法如下:(1)⼯作时数超过120⼩时者,超过部分加发15%;(2)⼯作时数低于60⼩时者,扣发700元;(3)其余按每⼩时84元计发。
编程按输⼊的⼯号和该员⼯的⼯时数,计算应发⼯资。
3. 根据求的近似值。
当n分别取100、1000、10000时,结果是多少?要求:分别⽤循环结构和向量运算(使⽤sum函数)来实现。
五、实验程序及结果1、程序:m=input('请输⼊⼀个数值:');n=floor(m/10);switch ncase 9disp('A');case 8disp('B');case 7disp('C');case 6disp('D');case {1,2,3,4,5}disp('E');otherwisedisp('输⼊错误!');end2、程序:x=input('请输⼊⼯号:');y=input('请输⼊⼯作时:');if y>120a=84*120+(y-120)*84*0.15;disp(['本⽉⼯资为:',num2str(a)]); elseif y<60b=84*y-700;disp(['本⽉⼯资为:',num2str(b)]); elsec=84*y;disp(['本⽉⼯资为:',num2str(c)]); end3、程序:y=0;n=input('输⼊⼀个数:');for i=1:ny=y+1/i/i;enda=sqrt(6*y);disp(['圆周率近似值为:',num2str(a)]);。
MATLAB实验指导书(附答案)

MATLAB基础实验指导书漳州师范学院物电系2010年10月目录实验一MATLAB环境的熟悉与基本运算 (2)实验二MATLAB数值运算 (8)实验三MATLAB语言的程序设计 (12)实验四MATLAB的图形绘制 (16)实验五采用SIMULINK的系统仿真 (20)实验六MATLAB在电路中的应用 (25)实验七MATLAB在信号与系统中的应用 (27)实验八MATLAB在控制理论中的应用 (29)实验一 MATLAB环境的熟悉与基本运算一、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识:1.熟悉MATLAB环境:MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。
2.掌握MATLAB常用命令3.MATLAB变量与运算符变量命名规则如下:(1)变量名可以由英语字母、数字和下划线组成(2)变量名应以英文字母开头(3)长度不大于31个(4)区分大小写MATLAB中设置了一些特殊的变量与常量,列于下表。
MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符表2 MATLAB算术运算符表3 MATLAB关系运算符表4 MATLAB逻辑运算符表5 MATLAB特殊运算4.MATLAB的一维、二维数组的寻访表6 子数组访问与赋值常用的相关指令格式5.MATLAB的基本运算表7 两种运算指令形式和实质内涵的异同表6.MATLAB的常用函数表8 标准数组生成函数表9 数组操作函数三、实验内容1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)2、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。
3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。
第六讲M文件和函数句柄

-4-
例 6.2.4 用 for 循环指令来求 Fibonacci 数列中第一个大于 10000 的元素 n=100;a=ones(1,n); for k=3,n a(k)=a(k-1)+a(k-2); if a(k)>=10000 a(k), break; % 跳出所在的一级循环 end; end,k ans = 10946 k= 21
6.2.4 switch-case 结构
switch ex ex 为一标量或字符串。 case test1 (commands 1) 当 ex 等于 test1 时,执行组命令 1,然后跳出该结构。 case test2 …… case testk (commands k) 当 ex 等于 testk 时,执行组命令 k,然后跳出该结构。 otherwise otherwise 指令可以不存在 (commands) 表达式不等于前面所有检测值时,则执行该组命令。 end [说明] (1)当遇到 switch 结构时,MATLAB 将表达式的值依次和各个 case 指令后面的检测值进 行比较。如果比较结果为假,则取下一个检测值再比较,一旦比较结果为真,MATLAB 将 执行相应的一组命令,然后跳出该结构。如果所有的比较结果都为假,即表达式的值和所有 的检测都不等,MATLAB 将执行 otherwise 后面的一组命令。由此可见上述结构保证了至少 有一组命令会得到执行。 (2)switch 指令后面的表达式应为一个标量或者为一个字符串。对于标量形式的表达式, 比较这样进行:表达式 = = 检测值 i。而对于字符串,MATLAB 将调用函数 strcmp 来实现 比较:strcmp(表达式,检测值 i) 。 (3)case 指令后面的检测值不仅可以为一个标量值或一个字符串,还可以为一个元胞数组。 如果一个检测值是一个元胞数组,MATLAB 将把表达式的值和该元胞数组中的所有元素进 行比较;如果元胞数组中某个元素和表达式的值相等,MATLAB 认为此次比较结果为真, 从而执行与该检测值相应的一组命令。 例 6.2.5 将百分制的学生成绩转换为五级制的成绩 x=input('请键入学生成绩:'); switch fix(x/10) case {10,9} f='A'
M函数文件(matlab)

4.1.4 其他流程控制指令
1. break指令 break指令可以使包含break的最内层的for 或while语句强制终止,立即跳出该结构,执 行end后面的命令,break命令一般和If结构结 合使用。 2. continue指令 continue指令用于结束本次for或while循环, 只结束本次循环而继续进行下次循环。
4.1.4 其他流程控制指令(续)
error/lasterr 显示出错信息/显示最新出错原因,终止程序运行 warning/lastwarn 显示警告/显示MATLAB自动给出的最新警告,程序继续运行 %exm R=input('What is your name:','s') %以字符串形式赋给R S=input('How old are you?') %键入数值 pause(3) %暂停3秒 pause %等待用户按任意键 error('You can''t join the army') %显示出错信息 errordlg,warndlg %给出出错、警告对话框
4.2.1
M脚本文件和函数文件的比较
2. 函数文件的特点 (1) 第一行总是以“function”引导的函数声明行; 函数声明行的格式: function [输出变量列表] = 函数名(输入变量列表) (2) 函数文件在运行过程中产生的变量都存放在函数本身的 工作空间; (3) 当文件执行完最后一条命令或遇到“return”命令时,就 结束函数文件的运行,同时函数工作空间的变量就被清 除; (4) 函数的工作空间随具体的M函数文件调用而产生,随调用 结束而删除,是独立的、临时的,在MATLAB运行过程中 可以产生任意多个临时的函数空间。
M文件及函数的编写

在调用函数之前,需要先声明函数,告诉编译器函数的名称、输入参数和返回值类型。
函数参数与返回值
参数
用于传递数据给函数,函数内部通过参数接收数据并进行处理。
返回值
函数执行完毕后,将结果返回给调用者。
函数体与局部变量
函数体
包含函数的逻辑和计算过程,是实现函数功能的 代码块。
局部变量
在函数内部定义的变量,只在函数内部有效,生 命周期与函数执行过程一致。
以查看每一步的结果。
02 条件断点
根据特定条件自动停止程
序。
04 错误消息和警告
仔细阅读和利用MATLAB
提供的错误消息和警告信
息。
M文件性能优化
向量化操作
利用MATLAB的向量化操作,避免 使用循环结构,提高代码执行效率。
避免不必要的函数调用
减少不必要的函数调用,以提高代码 执行速度。
预分配内存
用于多分支条件判断。
while循环
用于当条件满足时重复执行一段代码。
函数与脚本
01
函数
用于封装一段可重用的代码,并接受输入参数和 返回输出结果。
02
脚本
用于执行一系列MATLAB命令,不接受输入参数 和返回输出结果。
03
函数编写
பைடு நூலகம்
函数定义与声明
函数定义
指明函数名称、输入参数和返回值类型,以及函数体。
算法实现与验证
算法选择
根据问题需求选择合适的算法,并使用M文件实现该算法。
参数调整
根据实际需要调整算法参数,以提高算法性能和准确性。
算法验证
通过实验验证算法的有效性和优越性,并利用M文件记录实验结 果和分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六 M函数文件编程
1、 实验目的
1、掌握M语言程序设计的方法
2、掌握函数文件的编写方法
2、掌握用户参数交互输入设计技术
2、 主要仪器及耗材
计算机,MATLAB7.0。
3、 实验内容和步骤
1、给定三个边长,看看他们是否能够组成一个三角形。
要求:
编写M函数,输入参数为三个边长,而输出则为字符串,说明给定的边长是否能够组成三角形,若可能,进一步指出是否为等腰三角形或者是等边三角形。
对输入的错误数据格式(如字符串等)能够给出错误提示。
2、费波纳切数列:1、1、2、
3、5、8、13……,其递推公式为:
a(1)=a(2)=1,a(n)=a(n-1)+a(n-2)(n>=3)。
编程实现求n项的费波纳切数列。
要求:用M语言函数实现;对输入的错误数据格式(如字符串、小数等)能够给出错误提示。
3编写M脚本文件,输出9×9乘法表。
显示如下。
1×1= 1
1×2= 2 2×2= 4
1×3= 3 2×3= 6 3×3= 9
1×4= 4 2×4= 8 3×4=12 4×4=16
1×5= 5 2×5=10 3×5=15 4×5=20 5×5=25
1×6= 6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7= 7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8= 8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9= 9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
参考程序:
for i=1:9;
A=[];
for j=1:i;
A=[A,sprintf('%d×%d=%2d ',j,i,i*j)];
end
disp(A)
end
4、编写一个randm函数,能够产生在[-m,m]之间的随机数。
4、 思考
1、M文件与在Matlab命令窗口中直接输入命令有何异同,有何优缺点?
2、脚本文件与函数文件的异同。
3、函数文件被调用时,函数和被调用之间怎样实现数据传递?。