Matlab--函数与子函数

函数与子函数

函数语法结构

  • 函数同其它高级语言一样,是MATLAB语言的重要组成部分,MATLAB除了内部函数外,还有各种工具箱中的函数,这些函数都以M文件给出,以便调用。
  • 下面以一个例子来说明MATLAB函数的语法。下面是文件名为mean.m的内容。
function y = mean(x,dim)
%MEAN   Average or mean value.
%   For vectors, MEAN(X) is the mean value of the elements in X. For
%   matrices, MEAN(X) is a row vector containing the mean value of
%   each column.  For N-D arrays, MEAN(X) is the mean value of the
%   elements along the first non-singleton dimension of X.
%
%   MEAN(X,DIM) takes the mean along the dimension DIM of X. 
%
%   Example: If X = [0 1 2
%                    3 4 5]
%   then mean(X,1) is [1.5 2.5 3.5] and mean(X,2) is [1
%                                                     4]
%   See also MEDIAN, STD, MIN, MAX, COV.

%   Copyright 1984-2001 The MathWorks, Inc. 
%   $Revision: 5.16 $  $Date: 2001/04/15 12:01:26 $

if nargin==1, 
 % Determine which dimension SUM will use
 dim = min(find(size(x)~=1));
 if isempty(dim), dim = 1; end
 y = sum(x)/size(x,dim);
else
 y = sum(x,dim)/size(x,dim);
end
  • mean是MATLAB用于统计的一个函数。第一行为函数的声明,函数语法为:
function [返回参数列表]=函数名(输入参数列表)

mean的返回参数为y,y可以用中括号括起来。输入参数为x和dim,

  • nargin和nargout为MATLAB的内部变量,分别表示输入参数个数和输出参数个数,由于有些函数要进行参数个数检查或在一些函数实现时参数个数不确定,因此要借助这两个变量进行程序算法设计和控制。
  • 百分号%用于注释,%后的字符串表示注释文本

函数编写示例

求任意两个自然数之间(包含两个自然数)所有自然数的和。

输入参数2各,输出参数1个,即返回和值。

函数名这里取为sum2,函数名要有一定意义,才便于记忆,而且不要于系统内部函数相同,可以通过“help 函数名”看一下改函数名是否为系统函数。

function r=sum2(n1,n2)
%sum2  求任意自然数n1和n2之间(含n1和n2)所有整数的和
if n2>=n1 ,
    r =(n2-n1+1)*(n1+n2)/2;
else
    r=(n1-n2+1)*(n1+n2)/2; 
end
输入:
 sum2(1,100)
ans =
        5050

函数的参数

  • 参数的传递规则

每个函数有自己专用的工作空间,函数内部变量与MATLAB工作空间的联系只通过输入参数与输出参数来建立。参数的传递属于值传递,即输入参数变量的值在函数内部改变了,而在调用改函数时没有作为返回参数,那么这个输入参数变量的并没有改变。
例如:

function r=test1(a)
%改变输入参数a的值
r=[];
a=999;
r=a;
运行:
a=100;test1(a);a
输出:
a =
   100
说明a的值并没有改变,可以这样调用来改变a的值。
>> a=100;a=test1(a);a
输出:
a =
   999

子函数
函数文件可以包含一个以上的函数,该文件中的第一个函数时主函数,后面定义的所有函数都是子函数,子函数只允许同一个文件中的函数及其它函数访问。函数文件名要与主函数名相同。

function s=mymainfun
num=input('输入一个正整数:')
sprintf('从1到整数%d的和为%d',num,mysum(num))
function s=mysum(num)
%求1到num所有整数相加之和
s=0;
for i=1:num,
    s=s+i;
end

私有函数

私有函数指位于private目下的函数,它们只能被其上一层目录的函数访问,对于其它目录的函数是部可见的,这就允许私有函数可以与其它目录下的函数同名。

MATLAB在执行某个程序或函数时,如果它有私有目录,则先查找私有目录,在根据MATLAB的PATH查找其它目录下的函数。

如果建立了私有函数目录,则不要添加到MATLAB的查找路径当中。

建立内部函数
命令:

inline

语法:

inline(expr)  根据expr建立内部函数,函数自变量根据表达式自动搜索;
inline(expr, arg1, arg2, ...)  指定参数,arg1等参数是字符串参数
inline(expr, N)   参数为x,P1,P2,…,PN为

例子:

g = inline('t^2')
f = inline('xyz','x','y','z')
g = inline('x^P1+x^P2',2)
例子:运行如下
f = inline('x^2+y^3')

f =
     Inline function:
     f(x,y) = x^2+y^3

f(3,1)
ans =
    10

你可能感兴趣的:(Matlab)