在matlab中定义函数而不使用新函数

时间:2013-02-28 08:28:21

标签: function matlab

我的代码有一个matlab文件,我想在这个文件中定义一个新函数,我不想为这个函数添加新文件,因为这个文件是我控制Webots中代理的代码,以及控制器文件必须是单个文件。 函数必须首先定义我的代码在文件中或最后一个或...?

3 个答案:

答案 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在评论中提到这里有一个警告:虽然脚本可以访问主工作区中的变量,但函数有自己的范围。记在脑子里。不过,您仍然可以使用loadsaveevalinassignin命令操作工作区变量。

答案 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);