MATLABm文件和函数
MATLABM文件与M函数

M文件与M函数Matlab输入命令的常用方式有两种:一种是直接在Matlab的命令窗门中逐条输入Matlab 命令;二是m文件工作方式。
当命令行很简单时,使用逐条输入方式还是比较方便的。
但当命令行很多时(比如说几十行乃至全成百上千行命令),显然再使用这种方式输入MATLAB 命令,就会显得杂乱无章,不易于把握程序的具体走向,并且给程序的修改和维护带来了很大的麻烦。
这时,建议采用Matlab命令的第二种输入形式m文件工作方式。
m文件工作方式,指的是将要执行的命令全部写在一个文本文件中,这样既能使程序显得简洁明了,又便于对程序的修改与维护。
m文件直接采用Matlab命令编写,就像在Matlab的命令窗口直接输入命令一样,因此调试起来也十分方便,并且增强了程序的交互性。
m文件与其他文本文件一样,可以在任何文本编辑器中进打编辑、存储、修改和读取。
利用m文件还可以根据白己的需要编写一些函数,这些函数也可以橡Matlab提供的函数一样进行调用。
从某种意义上说,这也是对MA TLAB的二次开发。
m文件有两种形式:一种是命令方式或称脚本方式;另一种就是函数文件形式。
两种形式的文件扩展名均是.m。
1、M文件当遇到输入命令较多以及要重复输入命令的情况时,利用命令文件就显得很方便了。
将所有要执行的命令按顺序放到一个扩展名为.m的文本文件中,每次运行时只需在MATLAB 的命令窗口输入m文件的文件名就可以了。
需要注意的是,m文件最好直接放在Matlab的默认搜索路径下(一般是Matlab安装目录的子目录work中),这样就不用设置m文件的路径了,否则应当用路径操作指令path重新设置路径。
另外,m文件名不应该与Matlab的内置函数名以及工具箱中的函数重名,以免发生执行错误命令的现象。
Matlab对命令文件的执行等价于从命令窗口中顺序执行文件中的所有指令。
命令文件可以访问Matlab工作空间里的任何变量及数据。
命令文件运行过程中产生的所有变量都等价于从Matlab工作空间中创建这些变量。
【良心出品】MATLAB实验五《M文件和函数句柄》

【良心出品】MATLAB实验五《M文件和函数句柄》实验五 M 文件和函数句柄一、实验目的1、掌握M 文件的编写方法。
2、熟练掌握MATLAB 的五种程序控制流结构。
3、掌握M 函数文件的一般结构。
4、了解函数句柄的创建、观察及基本使用方法。
二、实验主要仪器与设备装配有MA TLAB7.6软件的计算机三、预习要求做实验前必须认真复习第六章M 文件和函数句柄。
四、实验内容及实验步骤1、已知函数??≤<≤--<=+-x e x xx xy x 111113,编写能对任意一组输入x 值求相应y 值的程序,并验证运行结果。
(1)编写M 函数文件function y=exm060101(x)% y=exm060101(x) Function calculate of example n=length(x); for k=1:n if x(k)<-1 y(k)=x(k); elseif x(k)>=1 y(k)=exp(1-x(k)); elsey(k)=x(k)^3; endend(2)把文件exm060101.m 放置在搜索路径上(3)运行以下指令x=[-2,-1,-1.2,-0.4,0.8,1,6] y=exm060101(x) 运行结果: x =-2.0000 -1.2000 -0.4000 0.8000 1.0000 6.0000y =-2.0000 -1.2000 -0.0640 0.5120 1.0000 0.00672、已知学生的名字和百分制分数。
要求根据学生的百分制分数,分别采用“满分”、“优秀”、“良好”、“及格”、“不及格”等表示学生的学习成绩。
试用switch结构编程实现。
clear;%定义分数段:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。
for k=1:10a(k)={89+k};b(k)={79+k};c(k)={69+k};d(k)={59+k};end;c=[d,c]; %输入学生的名字和分数A= cell(3,5) ;A(1,:)={'Jack','Marry','Peter','Rose','T om'};A(2,:)={72,83,56,94,100};for k=1:5switch A{2,k}case 100r='满分';case ar='优秀';case br='良好';case cr='及格';otherwiser='不及格';endA(3,k)={r};endA运行结果:A ='Jack' 'Marry' 'Peter' 'Rose' 'Tom'[ 72] [ 83] [ 56] [ 94] [ 100]'及格' '良好' '不及格' '优秀' '满分'3、试用for 循环结构创建Hilbert 矩阵。
M文件及函数的编写

在调用函数之前,需要先声明函数,告诉编译器函数的名称、输入参数和返回值类型。
函数参数与返回值
参数
用于传递数据给函数,函数内部通过参数接收数据并进行处理。
返回值
函数执行完毕后,将结果返回给调用者。
函数体与局部变量
函数体
包含函数的逻辑和计算过程,是实现函数功能的 代码块。
局部变量
在函数内部定义的变量,只在函数内部有效,生 命周期与函数执行过程一致。
以查看每一步的结果。
02 条件断点
根据特定条件自动停止程
序。
04 错误消息和警告
仔细阅读和利用MATLAB
提供的错误消息和警告信
息。
M文件性能优化
向量化操作
利用MATLAB的向量化操作,避免 使用循环结构,提高代码执行效率。
避免不必要的函数调用
减少不必要的函数调用,以提高代码 执行速度。
预分配内存
用于多分支条件判断。
while循环
用于当条件满足时重复执行一段代码。
函数与脚本
01
函数
用于封装一段可重用的代码,并接受输入参数和 返回输出结果。
02
脚本
用于执行一系列MATLAB命令,不接受输入参数 和返回输出结果。
03
函数编写
பைடு நூலகம்
函数定义与声明
函数定义
指明函数名称、输入参数和返回值类型,以及函数体。
算法实现与验证
算法选择
根据问题需求选择合适的算法,并使用M文件实现该算法。
参数调整
根据实际需要调整算法参数,以提高算法性能和准确性。
算法验证
通过实验验证算法的有效性和优越性,并利用M文件记录实验结 果和分析。
4.1 M文件和函数文件

3
第四章 M文件和函数文件
2. M文件的创建 建立新的M文件: (1)从MATLAB主窗口的File菜单中选择New菜单项,再 选择script file (2)单击MATLAB主窗口工具栏上的New script命令按钮, 创建M文件
4
第四章 M文件和函数文件
例 1:分别创建命令文件和函数文件,将华氏温度f 转化成摄氏温度c。c=5/9(f-32)
5
第四章 M文件和函数文件
6
第四章 M文件和函数文件
函数文件的基本结构
Function 输出参数=函数名(输入参数) 注释说明部分 函数体语句 函数文件调用时的格式为:函数名(输入参数)
1
第四章 M文件和函数文件
本章内容: M文件和函数文件概述 M文件和函数文件的创建和建立
2
第四章 M文件和函数文件
1. M文件和函数文件概述 用MATLAB语言编写的程序成为M文件。M文件是由若干 MATLAB命令组合在一起构成的。MATLAB中提供的内 部函数以及各种工具箱都是M文件。
通常M文件分为两类:命令文件(script file) 和函数文件 (function file). 它们的扩展名都是.m
MATLAB 程序设计 MATLAB 程序设计
主讲人:王佐才 “黄山青年学者教授”
道路与桥梁工程系 副主任
Department of Civil Engineering
Hefei University of Technology zw3z8@; wangzuocai1127@
MATLAB m文件和函数

Matlab与系统仿真
h
22
➢ 例:
>> t=0:0.1:2*pi; >> y1=sin(t); >> y2=cos(t); >> y3=sin(t).*cos(t); >> plot(t,y1,'-',t,y2,':g',t,y3,'xk')
Matlab与系统仿真
h
23
思考:但很多实验情况下,实际上是对同一个变量进行测 量,并将数据进行绘图比较。
➢ subplot(m,n,p) :将当前窗口分割成m行、n列,并且 当前在其中的第p个区域绘图。
➢ 绘图区域编号原则:“从左到右,从上到下”。
➢ 允许每个子窗口不同的坐标系。
Matlab与系统仿真
h
26
➢ 例:
subplot(3,2,2) t=0:0.1:2*pi; y1=sin(t); plot(t,y1,'-')
Matlab与系统仿真
h
5
例1 :
>>t=0:0.1:pi; >>plot(t)
Matlab与系统仿真
h
6
例2 :绘制出一个周期内的正弦曲线
*语句命令及绘图结果:
>>t=0:0.1:2*pi; >>y=sin(t); >>plot(t,y)
Matlab与系统仿真
h
7
例3 :
>> t=0:0.1:2*pi; >> y1=sin(t); >> y2=cos(t); >> y3=sin(t).*cos(t); >> plot(t,y1,'-')
matlab匿名函数 M文件函数 嵌套函数 子函数 私有函数 重载函数

Matlab匿名函数匿名函数是MATLAB 7.0版提出的一种全新的函数描述形式,其基本格式为f=@(变量列表)函数内容,例如,f=@(x,y)sin(x.^2+y.^2)。
其效率似乎比inline更高。
更重要的,该函数允许直接使用MATLAB工作空间中的变量。
无需再将工作空间中的变量人微言轻附加参数在输入变量里表示出来,所以使得数学函数的定义更加方便。
例子:from simwe forum我们知道以字符串形式存在的函数表达式可以通过inline函数转化成内联函数。
现在的问题是,如何转化成更有效率的匿名函数?譬如a='(x+y)^2',我们可以通过f=inline(a),生成内联函数f(x,y)=(x+y)^2。
现在问题是如何由a,由代码生成@(x,y) (x+y)^2?a = '(x+y)^2';f = eval( sprintf('@(x,y) %s', a ));或f=eval(strcat('@(x,y)',a))或f=eval(['@(x,y)',a])匿名函数的效率似乎比内联函数更高,做如下测试:内联函数,大约5.4秒左右,匿名函数,大约3.4秒左右。
clear all;clc;syms x;t1=clock;r=0;for y=1:100a=x*log(x)*y+exp(x^3*y);% f=inline(a);f=eval(sprintf('@(x) %s',char(a)));r=r+f(2);end;t2=etime(clock,t1);在Matlab7.0以后的版本中,出现了一种新的函数类型–匿名函数,不但能够完成原来版本中内联函数(inline)的功能,还提供了其他更方便的功能。
Matlab首席科学家Moler教授都推荐用匿名函数替代原来的内联函数。
我最近学习了一些有关匿名函数的内容,现在总结一下:1,匿名函数的基本用法。
MATLAB的M文件学习和使用_纯手打-真实经验之谈

MATLAB的M文件的学习和使用
一、概念
M文件是MATLAB的程序文件,分为两类:脚本文件和函数文件。
✓脚本文件可以用于执行一些简单的MATLAB命令,运行时直接输入文件名就可以。
✓函数文件使用时不能直接输入函数名,必须由其他语句调用。
二、基本操作:
✓创建M文件:点击工具栏上的图标,或在命令窗口输入edit。
✓打开M文件:点击工具栏上的图标。
✓保存M文件:写好内容后,点击保存按钮,函数文件保存时文件名要和函数名一致。
存储路径一定要是英文。
三、函数M文件格式
函数M文件不能独立执行,有输入参数和输出参数,输出形参多于一个时,用方括号括起来。
格式为:
●function [参数1,参数2,…]=函数名(参数1,参数2,…)
●注释
●函数体
四、示例
1、创建文件,写入函数,并保存。
两个数加、乘运算,定义为ff函数:
2、“当前路径”和文件保存路径一致时才能调用,如果不一致就会报错。
我的文件放在桌面上了,当前路径就是桌面:
3、调用时先给出函数参数的值,如图:
因为是输入输出都是形参,所以变量名可以自己定义:
4、把调用命令写到另一个M文件中,这个是M文件是脚本文件,保存为main1.m,
和在命令窗口调用效果是一样的:
5、运行main1文件,在命令窗口直接输入文件名即可:
或者点击main1文件的运行按钮,命令窗口出现结果:。
第六章_MatlabM文件和函数句柄

3) continue
跳过位于其后的循环中的其他指令,执行循环的下一个迭代 例 更改数组中的值
a=ones(1,12);count=0;s=0; for k=1:12 if rem(k,3)==0 continue break else s=s+k; end count = count + 1; end count = 8
●当遇到switch结构时, matlab将表达式的值依次和各个case指 令后面的检测值进行比较.如果比较结果为假,则取下一个检测值再 比较,一旦比较结果为真, matlab将执行相应的一组命令,然后跳出 该结构。如果所有的比较结果都为假,即表达式和所有的检测值都 不等, matlab将执行otherwise后面的一组命令.可见该结构保证 至少有一组命令会得到执行。
6.2 脚本文件 和函数文件
m文件的语法类似于c语言,但又有其自身特点。它 只是一个简单的ASCII码文本文件,执行程序时逐行 解释运行程序。 m文件有两类独立的m文件 — 称脚本文件
可调用m文件 — 称函数文件
6.2.1 脚本文件
脚本文件 — 简单的m文件 脚本文件实际上是一串指令的集合,与在命令窗口 逐行执行文件中的所有指令,其结果是一样的。没 有输入输出参数。 运行产生的所有变量驻留在基本工作空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
意义
彗星状轨迹图 罗盘图 羽毛状图
二维填充函数 直方图 对数图 极坐标图 磁力线图 阶梯图形 火柴杆图
9
例:
>> t=-pi:0.3:pi; >>y=1./(1+exp(-t)); >> plot(t,y);
? 尝试:
>> stem(t,y);
>> polar(t,y);
>> stairs(t,y);
2. 加坐标轴名称: 3. 给图形加标题: 4. 加图例标注 :
xlabel( ‘string ') , ylabel( ‘string ') title( ‘string ') legend( ‘string1 ',' string2 ',…)
5. 加网格: 6. 加普通标注:
grid on , grid off
大家好
12
? ezplot ( )函数 >> ezplot('x^2+3*y^2-5')
大家好
13
(3)二维图形的修饰函数
? MATLAB 提供图形函数,专门用于对由plot 命令所画 图形进行修饰。
? 函数并非图形修饰唯一方法——菜单、右键快捷菜 单、属性设置页也可以。
大家好
14
1. 坐标轴范围的设定:axis([Xmin,Xmax,Ymin,Ymax])
……
大家好
10
大家好
11
ቤተ መጻሕፍቲ ባይዱ
2. 给定函数的曲线绘制
? Plot() 函数可以容易地绘制显式表达式的函数, 但隐函数曲线如何绘制?
如: x2+3y 2=5
? 按常规: >> x=-sqrt(5):0.01:sqrt(5); >> y1=sqrt((5-x.^2)/3); >> y2=-sqrt((5-x.^2)/3); >> plot(x,y1,x,y2)
五、绘图功能与技巧
? MATLAB提供了强大的图形绘制功能,用户只需 制定绘图方式,并提供充足的绘图数据,即可以得 到所需的图形。
大家好
1
? 主要内容
(一) 二维图形绘制 (二) 三维图形绘制 (三)图形 可视编辑工具
大家好
2
(一) 二维 图形绘制
( 1 ) 简单 二维图形绘制 (2)特殊二维图形绘制 (3)二维图形的 修饰函数 ( 4 ) 图形窗口 的控制与表现 (5)二维图形绘制 流程(总结)
大家好
1
0.5
0
-0.5
-1
0
2
4
6
8
1
0.5
0
-0.5
-1
0
2
4
6
8
0.5
0
-0.5
0
2
4
6
8
8
(2)绘制特殊二维图形
1. 常用调用格式
函数名和常用调 用格式
comet (x,y ) compass ( x,y ) feather (x,y ) fill (x,y ,c ) hist ( y,n) loglog (x,y ) polar ( x,y ) quiver ( x,y ) stairs ( x,y ) stem ( x,y )
大家好
4
? 'option' 选项:线的 类型、标记符号、颜色 等。
曲线线型
选项
意义
' –' '––' ':' ' –. '
实线 虚线 点线 点划
曲线颜色
选项
意义
选项
意义
选
项
'b'
蓝色
'c'
'g'
绿色
'k'
'm'
红紫
'r'
'w'
白色
'y'
蓝绿
'*'
黑色
'.'
红色
'x'
黄色
'o'
意义
标记符号 选项
星号 点号 叉号 圆圈
Plot( x ,y1, 'option1 ', x,y2, 'option2 ',…) x为公共X轴,分别以y1, y2 为Y 轴绘制多条曲线, 每条曲线的属性由相应的'option ' 确定。
1) 将图形的x轴的大小范围限定在[0,2pi] 之间, y轴的大小范围限定在[-2,2] 之间;
2) x、y坐标轴分别标注为“弧度值”、“函数值”; 3) 图形标题标注为“正弦曲线和余弦曲线”; 4) 添加图例标注,标注字符分别为“y1”、“y2”; 5) 给图形添加网格线; 6) 在两条曲线上分别标注文本“y1=sin( t) ”、 1) “y2=cos( t)”。
'pentagram' 'square ' 'diamond'
'hexagram'
线宽 LineWidth 例:plot(t,y2,'k--','LineWidth',5)
意义
五角星 正方块 菱形块 六角星
大家好
5
例1 :
>>t=0:0.1:pi ; >>plot(t)
大家好
6
例2 :绘制出一个周期内的正弦曲线
大家好
3
(1)绘制简单的二维图形
1. Plot(y) 当y为一向量,以y的序号作为X轴,按向量y得值绘制曲线。
2. Plot(x,y) x,y均为向量,以x为X轴,y为Y轴绘制曲线(x,y等长)。
3. Plot(x,y , 'option ' ) 曲线的属性(颜色、粗细。。。)由'option' 确定。
* 语句命令及绘图结果:
>>t=0:0.1:2*pi; >>y=sin(t); >>plot(t,y)
大家好
7
例3 :
>> t=0:0.1:2*pi; >> y1=sin(t); >> y2=cos(t); >> y3=sin(t).*cos(t); >> plot(t,y1,'-')
>> plot(t,y2,':g') >> plot(t,y3,'xk')
gtext( ‘string '),在弹出的图形窗口中, 选择地点,单击鼠标。
大家好
15
大家好
16
? 例:原图
>> t=0:0.1:2*pi; >> y1=sin(t); >> y2=cos(t); >> plot(t,y1,'r:',t,y2,'g*')
大家好
17
? 要求:进一步修饰例2.16 的图形,实现以下要求:
大家好
18
? 解:
大家好
>>help line
line([ 起点横坐标, 终点横坐标],[ 起点
纵坐标,终点纵坐 标]), 例:line([1,2],[3, 4])将画出(1,3) 到(2,4)的一条直 线,而不是(1,2) 到(3,4)。
19
? 最后结果(注意gtext 指令 ):
请大家看 同学备注
大家好
20
(4 )图形 窗口的控制与表现
1. 创建或打开图形窗口
? 在命令窗口运行绘图指令,自动创建(当前窗口,唯一); ? Figure 命令,创建另一窗口(当前),保留原窗口; ? 菜单建立新窗口; ? Clf 命令,清除当前窗口所有内容
大家好
21
2. 图形重叠(同一坐标系中绘制多幅图形)
? (1)Plot 命令会清屏,但可在一个plot 命令中实现 :