11

是否可以在 m 文件中使用一个函数,该函数在同一文件的后面部分实现:与其他编程语言(如 C)的风格相似?

4

2 回答 2

14

当然。

在这样的 m 文件中,局部函数将在主函数之后声明。例如:

function y = main_func(x)
% # This is the main function
y = helper_func1(x) .* helper_func2(x);  % # Just an example

function h1 = helper_func1(x)
% # This is a helper function #1
h1 = x + 2;                              % # Just an example

function h2 = helper_func2(x)
% # This is a helper function #2
h2 = x * 2;                              % # Just an example

在这个例子main_func中可以调用helper_func1并且helper_func2没有任何问题。您可以测试运行它并亲自查看:

   >> main_func(8)

   ans =        
       160

不需要任何前向声明。

顺便说一句,MATLAB自带的很多m文件都是这样实现的。例如,corrcoef. 使用type corrcoef,您可以看到。

注意:在提示符或脚本中不允许本地函数定义,因此您必须在 m 文件中声明“主”函数。作为练习,将我的示例复制粘贴到一个新的 m 文件中,删除main_func(仅第一行)的声明,看看会发生什么。

于 2012-11-11T13:11:11.620 回答
0

您可以使用相同的 m 文件使用静态类来实现许多功能:

MATLAB 的一个函数 = 一个文件的最初原因是什么,为什么仍然如此?

于 2012-11-12T00:00:36.543 回答