MATLAB 07_M文件,函数句柄
【良心出品】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 矩阵。
6.M文件和函数句柄
本章内容
6.1 6.2 6.3 6.4
MATLAB控制流 脚本文件和函数文件 MATLAB的函数类别 函数句柄
MATLAB程序及其作用
从总体上说,单独的MATLAB指令,及由若干 指令构成的孤立表达式,只能解算或仿真简单 理论数学模型所描述的问题 复杂些的问题通常需要用一组理论数学算式, 这些问题的解算及仿真就需要借助较复杂的 MATLAB程序进行 这种MATLAB程序由较多的MATLAB指令和多 种多样的MATLAB表达式组成,并循着一定的 执行次序运行 这种程序的扩展名为.m,这就是脚本M文件或 函数M文件
6.2.1 M脚本文从指令窗中直接输 入指令进行计算是十分轻松简单的事 但随指令数的增加,或随控制流复杂度的增加, 或重复计算要求的提出,直接从指令窗进行计 算就显得烦琐
此时脚本文件最为适宜
“脚本”本身反映这样一个事实:MATLAB只 是按文件所写的指令执行 关于M脚本文件的编写,请参见1.8节
H1行:以%开头,后面是大写体的函数文件 名和运用关键词简要描述的函数功能,供 lookfor和help指令在线帮助使用 在线帮助文本区:包括函数输入输出宗量的 含义,调用格式说明 编写和修改记录:说明编写及修改该M文件 的作者和日期、版本记录
6.2.4 M函数文件的一般结构
函数体
由实现该M函数文件功能的MATLAB指令组 成,它接受输入量,进行程序流控制,创建 输出量
课堂练习
习题6
2
6.3 MATLAB函数类别
MATLAB的M文件分为M脚本文件和M函 数文件 函数Function又被细分为主函数、子函数、 嵌套函数、私用函数、匿名函数等 本节介绍为主函数、子函数、匿名函数
matlab中的句柄
matlab中的句柄在matlab中,每一个对象都有一个数字来标识,叫做句柄.当每次创建一个对象时,matlab就为它建立一个唯一的句柄句柄中包含有该对象的相关信息参数,可以在后续程序中进行操作,改变其中的参数,以便达到不同的效果例如:gcf 是返回当前被激活的窗口的句柄。
你可以认为它就指代当前窗口。
figure(gcf)打开这个窗口。
这两天在看句柄式图形方面的东西,以下是我在看书过程中整理的学习笔记,比较详细的介绍了句柄以及与其密切相关的各种图形对象和它们的属性。
希望能对初学Matlab界面设计的朋友们有所帮助。
GUI学习笔记:句柄式图形常用函数:(1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值(2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。
(3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。
(4) a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePr opertyName2',...)返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory 与图形对象类型(如Figure)还有属性名称(如Color)组成。
a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。
(5) a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePr opertyName1',...)返回句柄值为h的对象指定属性的默认值。
如“DefaultFigureColor”。
第七章 M文件和函数句柄
在逻辑表达式中,作为输入的任何非 0 实数都被看作是 “逻辑真”,只有 0 才被认为是“逻辑假”。
标量(一个数)可以与任何维数组进行逻辑运算。运算在 标量与数组每个元素间进行。
当两个数组进行逻辑运算时,参与运算的数组必须维数相 同,运算在两数组相同位置上的元素间进行。
(3)Short-Circuit 逻辑运算
(1)两个标量(双精度实数)之间的关系运算
关系运算符 说明
<
小于
<= 小于等于
>
大于
>= 大于等于
== 等于
~= 不等于
举例 3<2 3<=2 3>2 3>=2 3==2 3~=2
返回结果 0 0 1 1 0 1
(2)两个数值数组之间的关系运算
进行比较的两个数组必须维数相同,比较在两数组相同 位置上的元素间进行,返回一个由0和1组成的“逻辑数组” 。
Matlab 程序设计基础
一、逻辑数据、关系运算、逻辑运算 二、程序控制语句 三、M函数
一、逻辑数据、关系运算、逻辑运算
1、逻辑类型的数据和函数 2、关系运算 3、逻辑运算 4、运算优先级
1、逻辑类型的数据和函数
逻辑类型的数据主要用于选择(判断)结构,在Matlab 中,也可用来作为数组元素的“逻辑索引”。用 1 表示逻辑“ 真”(true),用 0 表示逻辑“假”(false)。
(2) ture( ) 和 false( ) :创建逻辑类型的数据
用ture( )和false( )函数可以创建逻辑类型的数据
true :
即 logical (1)
true(n) : 逻辑1组成的n×n二维数组
true(m, n) :逻辑1组成的m×n二维数组
第六章_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文件 脚本文件实际上是一串指令的集合,与在命令窗口 逐行执行文件中的所有指令,其结果是一样的。没 有输入输出参数。 运行产生的所有变量驻留在基本工作空间。
Matlab教程之M文件和函数句柄
第 6 章 M 文件和函数句柄从总体上说,单独的MATLAB 指令,及由若干指令构成的孤立表达式,只能解算或仿真简单理论数学模型所描述的问题。
复杂些的问题通常需要用一组理论数学算式。
这些问题的解算及仿真就需要借助较复杂的MATLAB 程序进行。
这种MATLAB 程序由较多的MATLAB 指令和多种多样的MATLAB 表达式组成,并循着一定的执行次序运行。
这种程序的扩展名为m 。
这就是脚本M 文件或函数M 文件。
本章系统介绍编写MATLAB 程序时最常用到的四种控制结构、M 函数文件的构造、主函数、子函数以及匿名函数。
最后一节专门叙述函数句柄的创建、观察和调用。
6.1 MATLAB 控制流作为一种计算机编程语言,MATLAB 提供了多种用于程序流控制的描述关键词(Keyword )。
本节只介绍其中最常用的条件控制(if, switch )和循环控制(for, while, continue, break )。
由于MATLAB 的这些指令与其它语言相应指令的用法十分相似,因此本节只结合MATLAB 给定的描述关键词,对这四种指令进行简要的说明。
6.1.1if-else-end 条件控制if-else-end 指令为程序流提供了一种分支控制,它最常见的使用方式见表6.1-1。
【例6.1-1】已知函数xx x e xx y x ≤<≤--<⎪⎩⎪⎨⎧=+-111113,编写能对任意一组输入x 值求相应y 值的程序。
(1)function y=exm060101(x)% y=exm060101(x) Function calculate of example 6.1-1n=length(x); for k=1:n if x(k)<-1y(k)=x(k);elseif x(k)>=1y(k)=exp(1-x(k));elsey(k)=x(k)^3;endend(2)(3)x=[-2,-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.00676.1.2switch-case控制结构【例6.1-2】已知学生的名字和百分制分数。
matlab句柄函数
matlab句柄函数
MATLAB句柄函数是MATLAB编程中常用的一种函数,它在MATLAB 程序中起着重要的作用。
它的核心特性是可以在不同层次的句柄函数之间传递句柄,使用这种句柄函数可以使程序更加简洁、灵活、易于理解。
首先,我们来看一下MATLAB的句柄函数的基本原理:句柄函数是一种函数,它可以把一个函数的调用指针传递给另一个函数,从而使得应用程序可以具有更高的灵活性和可读性。
句柄函数可以用来改变句柄中给定函数的行为,这样可以大大简化程序代码、提高可维护性。
例如,可以使用句柄函数改变函数的调用参数、或者使用句柄函数在不同函数之间传递数据。
MATLAB的句柄函数的实现,需要使用句柄函数的宏。
实现句柄函数的宏是一种可以将多个函数调用连接在一起的功能,它可以将一个或多个函数的参数传递到另一个函数,从而使程序易于编写、易于阅读、也更容易调试。
此外,使用MATLAB句柄函数时也可以通过函数指针减少函数之间的耦合,提高程序的灵活性和可读性。
函数指针是一种原型,它可以用来向不同的函数传递参数,而不必按照原有的顺序,从而可以将连接函数的步骤简化。
MATLAB的句柄函数还可以用来实现更高级的功能,例如层次式句柄函数,它可以将多个函数的调用指针传递给另一个函数,从而可以大大简化程序,使程序更加简洁、易于理解。
总而言之,MATLAB句柄函数是一种非常有用的函数,它可以简化程序代码、提高可维护性,从而使程序更加简洁、灵活、易于理解。
MATLAB句柄函数可以大大提高软件编程的效率,为程序员提供更多的灵活性和可读性。
MatLab的函数句柄
MatLab的函数句柄函数句柄(function_handle)定义官⽅定义:函数句柄是⼀种表⽰函数的 MATLAB® 数据类型。
函数句柄的典型⽤法是将函数传递给另⼀个函数。
例如,您可以将函数句柄⽤作基于某个值范围计算数学表达式的函数的输⼊参数。
函数句柄的其他典型⽤法包括:指定回调函数(例如,响应 UI 事件或与数据采集硬件交互的回调)。
构造以内联⽅式定义⽽⾮存储在程序⽂件(匿名函数)中的函数的句柄。
我的理解:相当于C语⾔中的指针,给函数取了个别名,相当于原函数来使⽤。
帮助:isa(h,'function_handle')来查看变量h是否为函数句柄。
创建函数句柄通过在函数名称前添加⼀个@符号来为函数创建句柄。
例如,如果您有⼀个名为myfunction的函数,请按如下所⽰创建⼀个名为f的句柄:f=@myfunction;此时,相当于给myfunction取了个别名叫f。
调⽤该函数就有两种⽅法:1.f(x)2.myfunction(x)注:参数列表根据具体的函数⽽定,不仅仅只是例⼦中的x函数句柄是您可传递给其他函数的变量。
例如,计算 x2 在区间 [0,1] 上的积分。
q=integral(f,0,1);函数句柄会存储其绝对路径,因此如果您有有效句柄,则可以从任意位置调⽤该函数。
您不必在创建句柄时指定函数路径,只需指定函数名。
匿名函数您可以创建指向匿名函数的句柄。
匿名函数是基于单⾏表达式的 MATLAB 函数,不需要程序⽂件。
构造指向匿名函数的句柄,⽅法是定义anonymous_function函数主体,以及指向匿名函数arglist的以逗号分隔的输⼊参数列表。
语法为:h=@(arglist)anonymous_function语法:@(参数列表)单⾏表达式例⼦:定义匿名函数sqrsqr=@(x)x.^2;等价于:函数⽂件function myfun=sqr(x);myfun=x.^2;将⼀个函数传递到另⼀个函数您可以使⽤函数句柄作为其他函数(称为复合函数)的输⼊参数。
MATLAB函数句柄和M文件要点
第 6 章 M 文件和函数句柄6.1 Matlab 控制流6.2 脚本文件和函数文件 6.3 Matlab 的函数类别 6.4 函数句柄6.1 MATLAB 控制流6.1.1 if-else-end 条件控制 6.1.2 swith-case 控制语句 6.1.3 for 循环和while 循环6.1.4 控制程序流和的其他常用指令6.1.1 if-else-end 条件控制【例 6.1-1】已知x x x e y x si n )1.0(5.0si n 21.0+-=-,在505x -≤≤区间,求函数的最小值。
-50-45-40-35-30-25-20-15-10-55010203040506070x sin(x)2/exp(x/10) - (sin(x) (x + 1/10))/2在第四章中采用的方法(1)采用优化算法求极小值x1=-50;x2=5; %yx=@(x)(sin(x)^2*exp(-0.1*x)-0.5*sin(x)*(x+0.1)); [xc0,fc0,exitflag,output]=fminbnd(yx,x1,x2)%<9>%(2)据图形观察,重设fminbnd 的搜索区间 xx=[-23,-20,-18]; % fc=fc0;xc=xc0; % for k=1:2[xw,fw]=fminbnd(yx,xx(k),xx(k+1)); %<16>if fw<fc xc=xw; fc=fw; end endfprintf('函数最小值%6.5f 发生在x=%6.5f 处',fc,xc) 函数最小值-3.34765发生在x=-19.60721处 1)function [xmin,fmin,n]=exm060101(fx,a,b,Nt)% exm060101.m% fx% a、b% Nt% xmin、ymin% n[~,f0]=fminbnd(fx,a,b); %n=1; %jj=1; %while 1n=2*n; %d=(b-a)/n; %x=a:d:b; %ii=0;xc=zeros(1,n);fc=xc; %for k=1:n %[w,f,eflag]=fminbnd(fx,x(k),x(k+1)); %if eflag>0 %ii=ii+1;xc(ii)=w;fc(ii)=f;endend[fmin,kk]=min(fc); %xmin=xc(kk); %if abs(f0-fmin)<1e-6 %jj=jj+1; %if jj>Nt %break %endelseif f0-fmin>1e-6 %f0=fmin; %jj=1; %endend2)clearfx=@(x)(sin(x)^2*exp(-0.1*x)-0.5*sin(x)*(x+0.1)); a=-50;b=5;[xmin,fmin,n]=exm060101(fx,a,b,3);fprintf('在x=%6.5f处,函数到达最小值%6.5f\n',xmin,fmin)fprintf('最终子区间分割数为 %d\n',n)在x=-19.60721处,函数到达最小值-3.34765最终子区间分割数为 1286.1.2switch-case控制结构【例6.1-2】已知学生姓名和百分制分数,用“满分”,优秀、良好、及格和不及格表示学生成绩clear;%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','Tom' };% <7>A(2,:)={72,83,56,94,100}; % <8> %for k=1:5switch A{2,k} % case 100 % r='满分'; case a % r='优秀'; case b % r='良好'; case c % r='及格'; otherwise %r='不及格'; endA(3,k)={r}; end AA ='Jack' 'Marry' 'Peter' 'Rose' 'Tom' [ 72] [ 83] [ 56] [ 94] [100]'及格' '良好' '不及格' '优秀' '满分'6.1.3 for 循环和while 循环【例 6.1-3】请分别写出用for 和while 循环语句计算1000000210000002.02.02.012.0+++==∑= i i K 的程序。
matlab中函数的句柄是什么意思?有什么作用?
matlab中 函 数 的 句 柄 是 什 么 意 思 ? 有 什 么 作 用 ?
比定义f(x)=x^2写 f=@(x)(x.^2) 其@(x)(x.^2)匿名函数第括号面自变量第二括号面表达式@函数指针 f=@(x)(x.^2)表示匿名函数@(x)(x.^2)赋值给f于f表示该函数 于f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等
handle=@functionname 返指向制定MATLAB函数句柄 函数句柄指指向函数量句柄函数获函数句柄存
ቤተ መጻሕፍቲ ባይዱ
定义匿名函数调用别匿名函数比 f1=@(x,y)(x.^2+y.^2) 定义函数x^2+y^2 f2=@(t)(f1(t,2)) 定义函数t^2+4 f3=@(x)(f1(x(1),x(2))) 定义函数x(1)^2+x(2)^2 使用匿名函数定要注意函数本身参数形式 f1(2,3) 表示2^2+3^2 f2(3)=3 表示3^2+4 f3([1,2]) 表示1^2+2^2 说白函数指针
第六章 M文件和函数句柄
使用循环结构,在循环指令之前应尽量对数组进行预定义 使用循环结构 在循环指令之前应尽量对数组进行预定义
● 由于 和j是预定义变量 作虚单位使用 建议不作为循环变量 由于i和 是预定义变量 作虚单位使用.建议不作为循环变量 是预定义变量,作虚单位使用
5
(2) while循环结构 循环结构 while expression (command) end 说明: 说明:
%(和一维数组冒号法定义相同 和一维数组冒号法定义相同) 和一维数组冒号法定义相同 % 循环体 % i, j虚数单位,尽量不用 虚数单位, 虚数单位
例7.1-1 for循环示例 循环示例
for ii=1:10 x(ii)=ii; end
x= 1 2 3 4 5 6 7 8 9 10
2
多重循环生成9x9乘法表 例7.1-2 多重循环生成 乘法表
% 划分区域:满分 划分区域:满分(100),优秀 优秀(90-99),良好 良好(80-89),及格 及格(60-79),不及格 不及格(<60) 优秀 良好 及格 不及格
for k=1:1:10 a(k)=89+k; b(k)=79+k; c(k)=69+k; d(k)=59+k; end
% 90-99 % 80-89 % 70-79 % 60-69
表达式为真? 表达式为真? Y 执行组命令 N 退出循环
数组元素满足规则: 例7.1-3 fibonacci数组元素满足规则:ak+2=ak+ak+1,(k=1,2,…); 数组元素满足规则 求出该数组中第一个大于10 且a1=a2=1.求出该数组中第一个大于 000的元素 求出该数组中第一个大于 的元素
4
Matlab北航教程 第七章 M文件和函数句柄
commands是一组合法的matlab指令集 只要expr的值不为0, (commands)将 被重复执行。 while循环体的执行次数事先不确定 当expr为数组时,只有其全部元素非0 时循环体才被执行。 expr的常见形式:
expr1<(<=,>,>=)a1|(&)expr2<(<=,>,>=)a2
四、switch-case结构 调用方法: switch expr(标量或字串) case t1 (commands1) case t2 (commands2) …… case tn (commandsn) ortherwise (commands) end
switch-case结构的执行过程: 依次将expr的值与检验值t1,t2,…,tn比较,哪 项比较为真,则执行该项检验值后的语句,若 全部为假,则执行otherwise后的语句。 注意:各检验值t1,t2,…,tn可以是元胞数组,此 时只要元胞数组中有一个元素与expr相同,则 比较为真。例7.2-5 五、try-catch结构 调用方法: try (commands1) catch (commands2)
step in:进入被调用的函数内部 step out:从被调用函数返回 3.text菜单下的evaluate用于查看选中变量 的当前值 CH7.2 MATLAB的控制流 根据某些判断结构来控制程序语句的执行次序 matlab提供了五种控制程序流程的结构 for循环 while循环 Matlab控制流结构 if-else-end分支结构 switch-case结构 try-catch结构
(1)指令窗中运行edit filename (2)工具条上的“open”图表 (3)指令窗中的【File ;Open】菜单 3.编辑文件 (1)edit菜单下:拷贝、粘贴、查找、替换 (2)text菜单下:注释、取消注释、缩进 调试功能 1.breakpoint菜单或工具条上的设置断点功 能,用于分段调试程序或重点调试某程序 段。常与debug中的run配合使用。 2.debug菜单下的执行功能。 1)run/continue:运行到断点 2)单步运行:step,step in,step out
第六章 M文件和函数句柄2
例4: 编写函数文件求半径为r的圆的面积和周长。
函数文件如下: function [s,p]=fcircle(r) %FCIRCLE calculate the area and perimeter of a circle of radii r %r %s %p s=pi*r*r; p=2*pi*r; 将以上函数文件以文件名fcircle.m存入D:\MATLAB701\work下,然后在 MATLAB命令窗口调用该函数: [s,p]=fcircle(10) 圆半径 圆面积 圆周长
例2:观察执行命令式文件和函数式文件后,变量的变 化。
function y=hanshu(a) x1=2*a x2=a^2
先执行x1=0.1; x2=0.2;
再执行 a=2;hanshu(a); 观察工作空间中x1,x2值的
变化情况
结论:在函数式M文件中,变量的值是以局部变量 的形式存储在文件中的。
例6:输入x,y的值,并将它们的值互换后输出。Fra bibliotek程序如下:
x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x);
disp(y);
例7:求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
第六章M文件和函数句柄方案
M函数文件的特点:
• 从形式上看,函数文件的首行总是以 function开头的函数申明行。函数名以及函数 的输入/输出量都在这一行被定义。输入/输出 量的数目没有限制;也可以完全没有输入输 出,比如函数中绘图。
•MATLAB允许使用比标称(申明)数目少的 输入/输出量,实现对函数的调用。
• 从运行上看,每当函数文件运行, MATLAB就会专门为它开辟一个临时工作空 间,该空间被称之为函数工作空间。所有中 间变量都存放在函数工作空间中。当执行完 文件最后一条指令,或遇到return指令,结束 该函数文件的运行,同时该临时函数空间及 所有中间变量立即被清除。
•函数空间随具体M函数文件的被调用而产生, 随调用结束而删除。函数空间相对基本空间 是独立的、临时的。在MATLAB整个运行期 间,可以产生任意多个临时函数空间。
•函数空间随具体M函数文件的被调用而产生, 随调用结束而删除。函数空间相对基本空间 是独立的、临时的。在MATLAB整个运行期 间,可以产生任意多个临时函数空间。
end
例6.1-2(P248)
说明:
胞元数组的不同胞元允许放置不同类型的数据。
对每个胞元赋值时,被赋的值必须放置在“花括 号”内。
圆括号()和花括号{}有着本质的区别:
():表示指定的胞元,例如A(2,3)是指A胞元数 组中的第2行第3列的胞元;
{ }:表示具体胞元的内容,例如A{2,3}是指A胞元 数组中第2行第3列的胞元中所存放的内容。
6.4 函数句柄
函数句柄(Function handle)是 MATLAB6.0版启用的新数据类型。它保存 着“为该函数创建句柄时的路径、视野、函 数名,以及可能存在的重载方法”。
6.4.1 函数句柄的创建和观察
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M文件和函数句柄
一、概念
1、编程的概念
2、向量化编程与数据流控制
二、知识点
1、编程基础
(1)程序的基本构件:变量、运算符、标点符号、关键词(字)、特殊值(预定义变量)、MATLAB函数(内建函数、M文件函数、重载函数)
(2)数据流控制
(3)M文件的基本类型
2、编写复杂程序必须的组件和技术
(1)函数:主函数、子函数、嵌套函数、匿名函数
(2)对象:内联对象
(3)句柄:直接句柄、匿名句柄
(4)泛函指令:eval、feval
(5)变量的使用域
(6)跨内存调用和赋值
3、
三、命令、函数列表
四、练习题
1、【7.2.1】for循环和while循环控制
2、
3、【例7.2-3】对于预先指定的控制精度ε,求∑∑===N n n k k S 11
1,其中N 要满足约束⎪⎪⎭⎪
⎪⎬⎫
⎪⎪⎩⎪⎪⎨⎧≤=∑=εN k k N 11min arg 。
4、
5if-elseif-else 条件分支控制
【例7.2-5】借助“if-else 条件分支控制”编写M 码,以实现式(7.2-1)分域函数的可视化(参见图7.2-5)。
⎪⎪⎩
⎪
⎪⎨⎧>+≤+<--≤+=-----+-- 15457.0 117575.01
5457.0),(5.175.375.065.175.375.022222
2y x e y x e y x e y x z x x y x y x x y
(7.2-1)
6try-catch容错控制
【例7.2-6】对MATLAB初学者来说,易混淆plot和ezplot的不同适用场合:前者只适于“离散数值数据”表达的曲线绘制;后者则适于“函数解析式”表达的曲线绘制。
本例将利用try-catch结构的意外警示(Throw an Exception)及意外处理(Handle an Exception)的能力,编写一个具备plot全部功能,
7M文件
【例7.3-1】编写一个M函数文件。
它具有以下功能:(A)根据指定的半径,画出蓝色圆周线;(B)可以通过输入字符串,改变圆周线的颜色、线型;(C)假若需要输出圆面积,则绘出圆。
8主函数和子函数
【例7.4-1】编写一个内含子函数的M函数绘图文件。
9
10函数句柄的创建和调用
【例7.5-1】采用M 函数文件描写2
1
cos )(at t y =,其中a 是可变参数。
试画出3.02.0≤≤t 区间上的
11内联对象:函数文件的简化。
【例7.6-5】用内联对象表达⎥⎦
⎤
⎢⎣⎡=x b a x b a y sin ),,(2。
12变长度”输入输出量
【例7.7-1】变长度输入输出量的应用示例。
13词串彩化和定界符匹配提示
【例7.8-1】本例采用专门设计的exm070801.m,集中表现“词串彩化”、“定界符匹配指示”、以及“M-Lint 检测信息的静态标志”等提示信息,以使读者能从具体实例中获得体验。
M-Lint 代码分析器
15M文件调试器
五、习题
1、。