当前位置:天才代写 > tutorial > Matlab教程 > Matlab函数

Matlab函数

2017-11-02 08:00 星期四 所属: Matlab教程 浏览:1385


一个函数是一组在一起执行任务的语句。 在MATLAB中,函数在单独的文件中界说。文件的名称和函数的名称应该是一样的。

函数在本身的事情空间内的变量上运行,这个变量也称为当地事情空间,与在MATLAB呼吁提示符下会见的事情区(称为根基事情区)差异。

函数可以接管多个输入参数,并大概返回多个输出参数。

函数语句的语法是 –

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

示例

以下名称为mymax的函数应写入名称为mymax.m的文件中。它需要五个数字作为参数,并返回参数数字值的最大值。

建设名为mymax.m的函数文件,从左上角菜单中点击新建->函数,并在个中键入以下代码 –

function max = mymax(n1, n2, n3, n4, n5)
% This function calculates the maximum of the
% five numbers given as input
max =  n1;
if(n2 > max)
    max = n2;
end
if(n3 > max)
   max = n3;
end
if(n4 > max)
    max = n4;
end
if(n5 > max)
    max = n5;
end

上面示例代码中,函数的第一行以要害字function开头。它给出了函数的名称和参数的顺序。在这个例子中,mymax函数有五个输入参数和一个输出参数。

函数语句之后的注释行提供了辅佐文本。当键入时,这些行被打印 –

Trial>> help mymax
 This function calculates the maximum of the
  five numbers given as input

此刻,我们来挪用这个函数 –

mymax(11,22,35,81,198)

执行上面代码,获得以下功效 –

Trial>> mymax(11,22,35,81,198)

ans =

   198

匿名函数

匿名函数就像传统编程语言中的内联函数,在单个MATLAB语句中界说。 它由单个MATLAB表达式和任意数量的输入和输出参数构成。

可以在MATLAB呼吁行或函数或剧本中界说一个匿名函数。

这样就可以建设简朴的函数,而无需为它们建设一个文件。

从表达式建设匿名函数的语法是 –

f = @(arglist)expression

示例

在这个例子中,编写一个名为power的匿名函数,它将利用两个数字作为输入,并将第一个数字返回到第二个数字的幂值。

建设剧本文件并在个中键入以下代码 –

power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)

当运行该文件,获得以下功效 –

result1 =  343
result2 =  7
result3 =  1.0000e-10
result4 =  9.5459

主函数和次函数

必需在文件中界说除了匿名函数以外的其它任何函数。每个函数文件包括主要呈现的必须的主函数,以及主函数之后的任意数量的可选子函数。

可以从呼吁行或其他函数的文件外部挪用主函数,但不能从呼吁行或函数文件外的其他函数挪用子函数。

子函数仅对函数文件中的主函数和其他子函数可见。

示例

下面编写一个名为quadratic的函数来计较二次方程的根。该函数需要三个输入参数:二次系数,线性系数和常数项。计较并会返回根。

函数文件quadratic.m将包括主函数quadratic和次函数和子函数disc,它计较鉴别式。

建设一个函数文件quadratic.m并在个中键入以下代码 –

function [x1,x2] = quadratic(a,b,c)
%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function

可以从呼吁提示符挪用上述函数 –

Trial>> quadratic(2,4,-4)

ans =

    0.7321

嵌套函数

可以在一个函数的主体内界说另一个函数。这样的函数被称为嵌套函数。嵌套函数包括任何其他函数的部门或全部组件。

嵌套函数在另一个函数的范畴内界说,而且它们共享对包括函数的事情空间的会见。

#p#分页标题#e#

嵌套函数遵循以下语法 –

function x = A(p1, p2)
...
B(p2)
   function y = B(p3)
   ...
   end
...
end

示例

下面来重写quadratic函数,从上一个例子来看,然而这次disc函数将是一个嵌套函数。

建设一个函数文件quadratic2.m并在个中键入以下代码 –

function [x1,x2] = quadratic2(a,b,c)
function disc  % nested function
d = sqrt(b^2 - 4*a*c);
end % end of function disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of function quadratic2

在呼吁行窗口中挪用quadratic2.m函数,获得以下功效 –

Trial>> quadratic2(2,4,-4)

ans =

    0.7321

私有函数

私有函数是仅在有限的其他函数组中可见的主函数。假如不想果真函数的实现,则可以将其建设为私有函数。

私有函数处在在专用名称为私有的子文件夹中。

它们只对父文件夹中的函数可见。

示例

下面来重写二次函数。这一次,计较鉴别式的disc函数将是私有函数。

在事情目次中建设一个名为private的子文件夹(F:\worksp\matlab\private)。存储以下函数在文件disc.m中 –

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function

在事情目次中建设一个函数quadratic3.m(对应目次为:F:\worksp\matlab),并在个中键入以下代码:

function [x1,x2] = quadratic3(a,b,c)
%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic3

在Matlab呼吁行中,挪用以上界说的函数 –

Trial>> quadratic3(2,4,-4)

ans =

    0.7321

全局变量

全局变量可由多个函数共享。 为此,需要在所有函数中声明变量为全局变量。

假如要从根基事情区会见该变量,则在呼吁行中声明该变量。

全局声明必需在函数实际利用变量之前举办。 将大写字母用于全局变量的名称是一个很好的做法,以区别于其他变量。

示例

下面建设一个名为average.m的函数文件,并在个中键入以下代码 –

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end

建设剧本文件并在个中键入以下代码 –

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)

执行上面示例代码,获得以下功效 –

Trial>> global TOTAL;
TOTAL = 10;
n = [36, 45, 35, 45, 33, 29, 50, 41, 58, 47];
av = average(n)

av =

   41.9000

 

    关键字:

天才代写-代写联系方式