我的代码有一个 matlab 文件,我想在这个文件中定义一个新函数,我不想为这个函数添加新文件,因为这个文件是我在 Webots 中控制代理的代码,并且控制器文件必须是单一的文件。函数必须在文件中定义我的代码的第一个或最后一个或...?
问问题
382 次
3 回答
3
您不能在脚本中定义函数,但可以在函数 m 文件中定义本地函数……因此,假设您的脚本如下所示:
blah blah %// This is your main code
%// Here you want to add another function, for example:
function y = foo(x)
y = x + 2;
如果您尝试执行上面显示的操作,您将收到以下错误:
Function definitions are not permitted at the prompt or in scripts.
但是,如果您只是将主脚本更改为一个函数,您将能够定义本地函数:
function mainfunc %// Main function name to your choosing
blah blah %// This is your main code
function y = foo(x)
y = x + 2;
由于您mainfunc
不接受也不返回任何参数,因此您可以像普通脚本一样运行它。另请注意,建议 main 函数和 m 文件同名。
编辑:Shai 在评论中提到这里有一个警告:虽然脚本可以访问主工作区中的变量,但函数有自己的范围。记在脑子里。尽管如此,您仍然可以使用 、 和 命令来操作工作load
区save
变量。evalin
assignin
于 2013-02-28T14:20:17.437 回答
2
如果你的函数非常小,可以定义为匿名函数
于 2013-02-28T08:38:28.160 回答
-2
我认为使用 eval 是您的案例的解决方案
把你的函数放在一个字符串变量中。
% script
subfun = 'do something with input parameter param, and assign to output variable'
param = xxx;
output = 0;
eval(subfun);
% Then access the output here
这是一个例子
% Script
subfun = 'output=param^2;output=output^2;'
param = 5;
output = 0;
eval(subfun);
disp(output);
于 2013-02-28T08:48:34.597 回答