010自定义函数可编辑修改word版.docx

上传人:b****7 文档编号:24962425 上传时间:2023-06-03 格式:DOCX 页数:10 大小:20.42KB
下载 相关 举报
010自定义函数可编辑修改word版.docx_第1页
第1页 / 共10页
010自定义函数可编辑修改word版.docx_第2页
第2页 / 共10页
010自定义函数可编辑修改word版.docx_第3页
第3页 / 共10页
010自定义函数可编辑修改word版.docx_第4页
第4页 / 共10页
010自定义函数可编辑修改word版.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

010自定义函数可编辑修改word版.docx

《010自定义函数可编辑修改word版.docx》由会员分享,可在线阅读,更多相关《010自定义函数可编辑修改word版.docx(10页珍藏版)》请在冰豆网上搜索。

010自定义函数可编辑修改word版.docx

010自定义函数可编辑修改word版

010.自定义函数

 

函数——是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块。

在主程序中通过函数名和实参调用它,通过接口(即函数的输入、输出参数)来实现“通讯”。

所以在调用函数时,你只要知道

【被调用的函数是用来做什么的】,以及【如何对应它的输入、输出参数】就行了。

关于【形参(形式参数)】和【实参(实际参数)】:

函数定义中的参数就是形参,只是用来限定函数所接收的数据类型的,“泛指该数据类型下任一元素”;函数调用中的参数就是实参,是“特指的具体数值”来代入函数体执行代码。

例如(C语言):

intmax(intx,inty)

{if(x>=y)

returnx;else

returny;}

……

inta=5,b=4;max(2,3);

max(a,b);

……

其中,x,y是形参,2,3,a,b是实参。

 

使用函数的好处:

增加程序的可读性(函数可独立放在主程序之外)和重用性(一个函数可以多次被调用)。

Matlab的自定义函数,常用的有:

m文件定义函数、

inline(内联)函数、匿名函数。

 

一、m文件定义函数(m-函数)

 

1.依次File-->New-->Function,会弹出一个新编辑窗口,包含代码如下:

function[output_args]=Untitled2(input_args)

%UNTITLED2Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

 

end

 

这是一个m-函数的模板。

function:

表示编写的是一个函数。

output_args:

输出参数,即函数的返回值,各返回值间用逗号隔开。

(不需要像C语言那样,通过return到返回值来赋值,outp_args相应的参数可以直接使用)

input_args:

输入参数,各参数之间用逗号隔开。

Untitled:

所定义的函数名。

注意:

函数名和m文件名需要保持一致。

 

end表示此函数编辑完毕。

 

函数的基本结构:

function[输出形参表:

output1,output1,...,outptn]=函数名[输入形参表:

input1,input2,...,inputn]

注释说明部分函数体代码部分

end

 

说明:

(1)在调用函数时要使用编写此函数的文件名,一般函数名和文件名保持一致。

(2)函数中遇return语句时,退出函数体,此函数调用结束。

(3)函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)

(4)在调用函数时,Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。

只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

2.函数体

 

完成函数的具体功能,是根据具体需要编写的。

通过使用“函数的输入参数”、“自定义变量”(注意Matlab的变量不用定义,赋值即可)、“流程控制结构”来实现。

3.子函数

 

函数体里面也可以定义一个或几个函数,称为子函数。

注意:

①子函数只能存在于主函数体内,不独立存在;②子函数在主函数体内的位置可以任意,不影响使用;③子函数只能被主函数以及其他位于同一主函数体下的子函数调用,但子函数“句柄”(见下文)例外。

4.函数调用

定义完m文件的函数,放置在Matlab的当前路径之下(或修改当前路径为m-函数文件所在路径),然后就和使用Matlab自带的函数一样,直接在命令窗口使用该函数就是调用它了。

调用函数时,需要知道函数是干嘛的,以及它的输入参数、输出参数。

例1函数(子函数)定义与调用示例,求向量的最大、最小值。

 

编写m-函数文件:

max_min_values.mfunction[max,min]=max_min_values(X)max=mysubfun1(X);

min=mysubfun2(X);

functionr=mysubfun1(X)%子函数1x1=sort(X,'descend');

r=x1

(1);

end

functionr=mysubfun2(X)%子函数2x1=sort(X);

r=x1

(1);

endend

命令窗口:

A=[34,56,23,11,2,39];

[m,n]=max_min_values(A)

运行结果:

m

=

56

n

=

2

 

二、内联函数——使用inline()

 

可以让用户编写简单的函数而不需要创建M文件。

语法格式:

 

f=inline(‘函数表达式’,‘变量1’,‘变量2’,……)

 

调用方式:

y=f(实参列表)

 

注意:

实参列表顺序应与inline()定义中形参(即变量名)的顺序一致。

注:

这种函数定义方式是将它作为一个内部函数调用。

好处是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。

缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。

例2内联函数示例。

 

f=inline(‘x^2+y’,’x’,’y’)z=f(2,3)

运行结果:

f=Inlinefunction:

f(x,y)=x^2+y

z=7

 

三、匿名函数

匿名函数具有inline()的所有优点,并且效率比inline函数高,类似于C语言的宏。

一旦定义了匿名函数,使用方式和inline函数类似。

使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。

注:

函数句柄,可以理解成函数的“代号”,适用于函数名比较长,用“代号”代替函数操作更方便。

例3匿名函数示例。

 

f=@(x,y)x^2+y^2;

f(2,3)a=1:

5;

b=5:

-1:

1;c=0.1:

0.1:

0.5;

运行结果:

ans

=

13

ans

=

g=@(x,y)x.^2+y.^2+c;g(a,b)

 

26.100020.200018.300020.400026.5000

 

四、其他函数定义

1.Syms+subs:

用syms定义一个符号表达式,用subs调用:

 

该方法的优点是,可以用符号进行替换;缺点是,由于使用符号运算内核,运算速度会大大降低。

例如,

Symsfx;%定义符号变量

f=1/(1+x^2);%定义符号表达式

subs(f,'x','y^2')%调用函数表达式,用y^2替换变量x

运行结果:

ans=1

4

1+y

2.字符串+subs

直接定义一个字符串,用subs命令调用。

例如:

 

f='1/(1+x^2)';

z=subs(f,'x',2)

g=subs(f,'x','y^2')

运行结果:

z=1/5

g=1

4

1+y

注:

优点是,占用内存最少,定义格式方面自由。

缺点是,无法对字符进行符号转化。

 

 

补充:

matlab的流程控制语句(编程语言基本都通用)

(一)分支结构

(1)if语句

if条件1

matlab语句1;

elseif条件2

matlab语句2;

.......

else

matlab语句n;end

 

注意:

①判断条件不用加小括号;结尾必须用end来标识if语句结束;

②某个逻辑条件为真,则执行且只执行下一条matlab语句(以

“;”结尾的)或{}中间的程序块。

 

(2)switch语句(与if语句类似)

switch表达式

case表达式1

matlab语句1

case表达式2

matlab语句2

........

case表达式nmatlab语句n

otherwise

matlab语句n+1

end

 

(3)try语句

try

matlab语句1catch

matlab语句2

end

说明:

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。

(二)循环结构

(1)for语句

for循环变量=初始值:

步长:

终值循环体语句

end

 

执行过程:

给循环变量赋初始值,判断若小于终值(若步长为负则大于),则执行循环体语句;循环变量加一个步长,再判断若小于终值,则执行循环体语句;重复前面过程直到循环变量不小于终值,跳出循环。

 

(2)while语句

while(条件)

循环体语句

end

 

执行过程:

若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

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

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