matlab 堆栈使用,matlab - 使用Matlab导入另一个.m文件 - 堆栈内存溢出

如果我理解你的情况,你会有这样的事情:

一个文件(`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文件是自动使用的)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值