我有我的代码的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`localfunctions`函数未定义
- 4. matlab函数变量定义
- 5. JavaScript - 定义函数而不调用它?
- 6. Matlab - 用户定义的函数作为函数的参数
- 7. 重新定义的函数,而另一个函数
- 8. 如何在CoffeeScript中新定义的函数上调用函数
- 9. 如何使用我定义的新函数中定义的函数?
- 10. 在MATLAB中查找特征值而不使用eig函数
- 11. R中的函数(x):写一个“函数”而不定义一个函数?
- 12. matlab函数定义中的错误
- 13. 在Matlab中使用自定义'FileName'发布函数
- 14. 使用DEC2BIN()函数在MATLAB
- 15. 如何在用户定义函数中使用AQL函数?
- 16. 在函数中使用函数“谁”在MATLAB中
- 17. ReferenceError:即使定义了函数,也不定义函数
- 18. 输入参数未定义 - MATLAB函数/子函数
- 19. 定义函数名称而不是lambda
- 20. PHP定义函数而不执行
- 21. 自定义函数在R'ddply'函数中不起作用
- 22. 使用定义的函数而不是匿名函数作为回调
- 23. 如何在VBA中定义的自定义函数中使用excel函数?
- 24. 在matlab中调用函数
- 25. 在matlab中调用函数
- 26. 在Matlab中使用不同数量的参数调用函数
- 27. 在自定义函数中使用data.frame?
- 28. 使用string.replace在类中定义函数
- 29. 在自定义函数中使用set_index
- 30. 在assetmanager中使用自定义函数
该文件是脚本还是函数? – 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