函数语法结构
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
function [返回参数列表]=函数名(输入参数列表)
mean的返回参数为y,y可以用中括号括起来。输入参数为x和dim,
函数编写示例
求任意两个自然数之间(包含两个自然数)所有自然数的和。
输入参数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