我有我的代码的matlab文件,我想在这个文件中定义一个新的函数,我不想为这个函数添加新文件,因为这个文件是我的代码, Webots中的控制代理和控制器文件必须是单个文件。 函数必须先定义文件中的第一个代码或最后一个代码或...?在matlab中定义函数而不使用新函数
回答
如果你的功能是非常小的,你可以将其定义为anonymous function
或内联函数也可能工作... – bla 2013-02-28 08:41:25
不,我的功能不是很小 – 2013-02-28 08:41:36
我想使用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);
我不要以为这是一个非常好的建议,根据问题和评论来看,这是一个初学Matlab的人。'eval'有它的地方,但那个地方不是试图编写包含本地函数定义的脚本文件。按照@ H.Muster的评论的主旨,OP会更好。 – 2013-02-28 10:05:46
@HighPerformanceMark如果所需的功能非常大,并且需要多行,即使使用匿名函数,也需要eval的帮助。据我所知,matlab没有lambda。甚至内联函数只是eval的一个包装。 – 2013-02-28 10:54:55
不能定义脚本中的一个函数,但你可以定义一个函数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. MATLAB回调函数:未定义函数?
- 2. matlab函数变量定义
- 3. 在MATLAB中创建自定义函数
- 4. 重新定义的函数,而另一个函数
- 5. 如何在CoffeeScript中新定义的函数上调用函数
- 6. matlab函数定义中的错误
- 7. R中的函数(x):写一个“函数”而不定义一个函数?
- 8. 如何在用户定义函数中使用AQL函数?
- 9. 输入参数未定义 - MATLAB函数/子函数
- 10. PHP定义函数而不执行
- 11. Knockout.js定义函数返回函数,而不是价值
- 12. 在matlab中调用函数
- 13. 在自定义函数中使用data.frame?
- 14. 使用string.replace在类中定义函数
- 15. 在自定义函数中使用set_index
- 16. 如何重新定义我在python中导入的函数使用的函数?
- 17. MATLAB函数重新分配未定义数量的变量值
- 18. TypeScript:重新使用接口定义中的函数定义
- 19. 在matlab回调函数中不起作用的开关函数
- 20. 如何在Matlab中从分段定义的函数中提取函数?
- 21. 重新定义函数
- 22. 重新定义jQuery函数
- 23. Matlab rgb2gray()未定义函数错误
- 24. MATLAB错误消息(函数定义)
- 25. 的SyntaxError而定义和调用函数
- 26. 在matlab中使用函数的矢量
- 27. 在MATLAB中使用tf()函数
- 28. 在C#中使用MATLAB函数
- 29. 在MATLAB中使用if函数Simulink
- 30. MATLAB错误“在此上下文中不允许使用函数定义。”
该文件是脚本还是函数? – 2013-02-28 08:30:47
见http://www.mathworks.de/de/help/matlab/matlab_prog/local-functions.html – 2013-02-28 08:31:05
这个文件是一个脚本文件 – 2013-02-28 08:31:29