matlab嵌套php,MATLAB的函数类型(5种)

本节介绍 MATLAB 的 5 种函数类型,分别为:主函数、子函数、嵌套函数、私有函数和重载函数。

主函数

通常 M 文件中的第一个函数为主函数,主函数后可以是任意数量的子函数。主函数可以被该文件之外的其他函数调用,主函数的调用是通过存储该函数的 M 文件的文件名进行的。

子函数

M 文件中可以包括多个函数,除主函数之外的其他函数称为子函数。子函数只能被主函数或该文件内的其他子函数调用。每个子函数以函数定义语句开始,直至下一个函数的定义或文件的结尾。各个子函数以任意顺序出现,但主函数必须最先出现。

示例1

主函数和子函数,具体程序如下:

function [avg, med] = newstats(u) % 主函数

% NEWSTATS Find mean and median with internal functions.

n = length(u);

avg = mean(u, n);

med = median(u, n);

function a = mean(v, n) % 子函数

% Calculate average.

a = sum(v)/n;

function m = median(v, n) % 子函数

% Calculate median.

w = sort(v);

if rem(n, 2) == 1

m = w((n+1) / 2);

else

m = (w(n/2) + w(n/2+1)) / 2;

end

当在 M 文件中调用函数时,系统首先判断是否为子函数,然后判断是否为私有函数,最后判断其是否为当前目录下的标准 M 文件函数或者系统内置函数。

嵌套函数

函数体可以定义其他的函数,这种内部函数称为嵌套函数。当 M 文件存在一个或多个嵌套函数时,M 文件中的所有函数必须以 end 结束。

嵌套函数的语法如下:

function x = A(p1, p2)

...

function y = B(p3)

...

end

...

end

每个函数可以嵌套多个函数,通常为平级嵌套结构和多层嵌套结构。

示例2

平级嵌套结构,具体程序如下:

function x = A(p1, p2)

...

function y = B(p3)

...

end

function z = C(p4)

...

end

...

end

上面示例中,函数 A 嵌套了函数 B 和函数 C。

示例3

多层嵌套结构,具体程序如下:

function x = A(p1, p2)

...

function y = B(p3)

...

function z = C(p4)

...

end

...

end

...

end

上面示例中函数 A 嵌套了函数 B,函数 B 嵌套了函数 C。

一个嵌套函数可以被下列函数调用。

该嵌套函数的上一层函数。

同一母函数下的同级嵌套函数。

任一低级别的函数。

示例4

嵌套函数的调用,具体程序如下:

function A(x, y) % Primary function

B(x, y);

D(y);

function B(x, y) % Nested in A

C(x);

D(y);

function C(x) % Nested in B

D(x);

end

end

function D(x) % Nested in A

E(x);

function E(x) % Nested in D

...

end

end

end

示例中函数 A 可以调用函数 B 和函数 D,但不能调用函数 C 和函数 E;函数 B 可以调用函数 D 和函数 C,函数 D 可以调用函数 B 和函数 E;函数 C 可以调用函数 B 和函数 D。

私有函数

私有函数是指位于 private 目录下的 M 文件函数。私有函数的构造与普通 M 函数完全相同,私有函数只能被 private 目录的上一级目录下的 M 函数文件调用,而不能被其他目录下的任何 M 函数、M 脚本文件调用,也不能被上一级目录下的 M 脚本文件调用。

重载函数

函数重载允许多个函数使用相同的函数名、不同的输入变量数据类型。函数调用时,系统根据函数输入变量的数据类型选择对应的函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值