如果我理解你的情况,你会有这样的事情:
一个文件(`A.m'):
function results = A(parameters)
% some code
一个文件(`B.m'):
function results = B(parameters)
% some code
你想在B里面使用函数A ,你可以从函数B里面调用那个函数:
function results = B(parameters)
% some code
otherResults = A(otherParameters)
如果您的情况与nimrodm描述的情况类似,那么您的Am文件类似于:
function results = A(paramters)
% some code
function results = C(parameters)
% code of function C
end
end
function results = D(parameters)
% code of function D
end
无法从A外部直接访问C和D 如果你需要在A之外使用子函数 D ,只需要创建一个包含Dm的文件
function results = D(parameters)
% code of function D
end
并且优选地,从功能A移除相同的代码。
对于嵌套函数 C ,可以在一些(但不是全部)情况下完成相同的操作,因为嵌套函数也可以访问函数A的变量。 在MATLAB的最新版本中(我猜R2010b或R2011a),编辑器突出显示了函数和teal中嵌套函数之间共享的变量。 如果不在函数C使用函数A的变量,只需执行与函数D相同的操作。 如果这样做,请将这些变量作为参数和/或返回值传递,并调整其余代码以反映这一点。 测试你的代码,之后,和D 。
最有可能的是,你不会有案例C ,因为这是MATLAB中的一个高级功能。
但是,如果您不使用MATLAB函数,而是使用不同文件中的MATLAB脚本,则会出现另一种情况。 您可以调用脚本(来自命令行和另一个函数或脚本,只需通过其(文件)名称)。
文件内容Em :
% code for script E
文件内容Fm :
% some code
E;
使用该代码,您可以从脚本F内部执行E所有命令。 请注意, E和F将共享所有变量,因此如果您通过clear all; close all; clc;开始编写脚本clear all; close all; clc; clear all; close all; clc; ,你不能将任何变量从F传递到E (并且在调用E之前你将失去F计算的所有结果。
在大多数情况下,最好使用函数而不是脚本,这也是解决这种情况的方法:将所有内容都放入具有合适参数和返回值的函数中。
编辑 :在你'改变'你的问题后,这很容易。
让我们考虑你有这个功能,我将使用不同的名称,因为这更直观易懂。 您在文件ackermann.m有函数ackermann ,您想从脚本bigScript.m调用bigScript.m 。
文件ackermann.m包含Ackermann-Péter函数(作为示例):
function result = ackermann(m,n)
if m == 0
result = n + 1;
elseif m > 0
if n == 0
result = ackermann(m-1,1);
elseif n > 0
result = ackermann(m-1,ackermann(m,n-1));
else
error('n has to be positive');
end
else
error('m has to be positive');
end
end
从您的大脚本内部,您可以按如下方式调用函数ackermann (如果您想要m = 1且n = 1):
A = ackermann(1,1)
就这么简单,不需要加载任何东西。 但是你需要记住让函数“在你的路径中可用”,最简单的方法就是将脚本和函数文件保存在同一目录中。
无论如何,我觉得你是一个初学的MATLAB用户:如果你不知道函数是做什么的,只需在命令窗口输入help functionname (当然替换functionname)。 您会注意到函数load是为了加载数据文件,而不是为m文件加载(因为路径中的m文件是自动使用的)。