我的代码有一个matlab文件,我想在这个文件中定义一个新函数,我不想为这个函数添加新文件,因为这个文件是我控制Webots中代理的代码,以及控制器文件必须是单个文件。 函数必须首先定义我的代码在文件中或最后一个或...?
答案 0 :(得分: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
不接受也不返回任何参数,因此您可以像普通脚本一样运行它。另请注意,建议主函数和m文件共享相同的名称。
编辑:Shai在评论中提到这里有一个警告:虽然脚本可以访问主工作区中的变量,但函数有自己的范围。记在脑子里。不过,您仍然可以使用load
,save
,evalin
和assignin
命令操作工作区变量。
答案 1 :(得分:2)
如果您的功能很小,可以将其定义为anonymous function
答案 2 :(得分:-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);