admin管理员组

文章数量:1794759

【MATLAB函数】function定义函数

【MATLAB函数】function定义函数

1、函数声明

定义:function [返回变量列表]=函数名(输入变量列表)

如:function [y1,...,yN] = myfun(x1,...,xM)

end

声明一个名为myfun 的函数,该函数接受输入参数 x1,...,xM 并返回输出参数 y1,...,yN。此声明语句必须是函数的第一个可执行代码行。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。

在函数定义中必须对返回变量列表中的变量赋值

2、函数文件与脚本文件中的函数

函数文件的名称应与函数的名称一致,不一致则调用该函数时以文件名为函数名调用。

脚本文件中,命令在前,函数定义在后,任何一条命令不能在函数定义之后,函数必须位于该文件的末尾。脚本文件的名称不能与文件中的函数具有相同的名称。

3、可变参数函数

定义:function varargout = myfun(varargin)

        end

nargin、nargout、varargin、varargout为MATLAB保留变量,只要进入可变参数函数,MATLAB就将自动生成nargin、nargout、varargin这3个变量,对于varargout变量只有对其赋值varargout才能使用。

nargin:函数的输入参数个数

nargout:函数的输出参数个数

varargin:输入可变参数列表(数据类型为 1xn cell数组,n=nargin)

varargout:输出可变参数列表(数据类型为 1xn cell数组,n=nargout)

脚本文件eg2如下:

[a,b]=demo(1,2) %显示a,b function varargout = demo(varargin)%输入两个数则求和,否则输入等于输出,两输入两输出其他情况出错 disp(['输入参数个数:',num2str(nargin)]); if nargin disp('输入参数为:'); varargin %显示输入 for i=1:nargin disp(['参数',num2str(i),':',num2str(varargin{i})]); end else disp('无输入参数'); end if isnumeric(varargin{1})&&isnumeric(varargin{2})%判断第一第二个参数是否为整数或浮点数 varargout{1}=varargin{1}+varargin{2};%求和 varargout{2}='N'; else [varargout{1:nargout}]=varargin{1:nargout};%必须使用方括号,否则出错 end varargout %显示输出 end

运行结果:

>> eg2 输入参数个数:2 输入参数为: varargin = 1×2 cell 数组 {[1]} {[2]} 参数1:1 参数2:2 varargout = 1×2 cell 数组 {[3]} {'N'} a = 3 b = 'N'

对于cell类型的变量A,当B=A{1}时B不是cell类型,而是A{1}内容数据的类型;当B=A(1)时B是cell类型。

给varargout即输出可变参数列表部分赋值时varargout必须加方括号,如:[varargout{1:nargout}]=varargin{1:nargout};

给varargout全部赋值时varargout不用加方括号,如: varargout=varargin{1:nargout};

4、同一脚本文件中文件与函数之间数据传递

如果函数要使用文件中的变量,且不通过函数的输入参数传递变量的话,对需要传递的变量在文件开头赋值,并在函数中声明该变量为全局变量global,如global t;

脚本文件eg3

t=10; a=add(2,1) %显示a function a=add(b,c) global t; a=b+c+t; end

运行结果: 

>> eg3 a = 13

5、不同脚本文件之间数据传递

 一个脚本文件的程序需要引用另一个脚本文件的变量时,被引用变量的脚本文件需声明全局变量global,并赋值,如global t;t=10;。需引用变量的脚本文件需在开头声明全局变量global,如global t;,然后在程序中使用该变量即可。

 一个脚本文件的函数需要引用另一个脚本文件的变量时,情况与同一脚本相同。

需引用外部变量的脚本文件eg3

clc; clear; global t; b=t+1 a=add(2,1) function a=add(b,c) global t; a=b+c+t; end

被引用变量的脚本文件eg4

global t; t=10;

运行eg3

>> eg3 b = 11 a = 13

6、保存函数的输入参数变量

将一个在函数外定义的变量a作为函数fun的输入参数,要想保存被函数fun修改后的变量a,则必须同时将变量a作为输出参数。

clear a1=1; a2=1; add1(a1) a2=add2(a2); function add1(a) a=a+1; disp(a) end function a=add2(a) a=a+1; disp(a) end >> temp3 2 2

可以在工作区看到 a1的值并未改变,a2的值变了。

 

 

本文标签: 函数定义MATLABfunction