Matlab调用不带括号的函数
Posted
技术标签:
【中文标题】Matlab调用不带括号的函数【英文标题】:Matlab Calling Functions without parentheses 【发布时间】:2017-12-27 07:23:29 【问题描述】:Matlab 脚本调用函数但提供不带括号的参数的情况的正确名称是什么?
例子:
clear xx
或者,我可以使用括号并使用变量名传输字符串:
clear('xx')
在搜索解决方案时如何区分这两种选择?
额外问题:如何将变量的内容放入不使用括号的调用中?具体来说,使用带有动态 -o filename 选项的 mcc 的构建脚本;用括号调用 mcc 也是可以接受的,但我不知道如何用谷歌搜索,因此提出了这个问题。
谢谢!
【问题讨论】:
mathworks.com/matlabcentral/answers/… 您好,感谢您的链接。这涉及从 shell 调用已编译的可执行文件。我在问 matlab 脚本之间的区别,所以 *.m-files. 【参考方案1】:当你调用一个没有括号的函数时,它被称为命令语法。以下是相关文档的三个链接:
syntax command vs function syntax scripts and functions奖励答案
在使用命令语法时不能使用变量。来自文档:
使用命令语法调用函数时,MATLAB 将参数作为字符向量传递。
所以它会像这样工作:
abc = zeros(10); % Some matrix called abc
mystring = 'abc' % A string containing the variable name
% Option 1:
clear('abc') % Clears the variable abc
% Option 2:
clear abc % As per above docs quote, interpreted as clear('abc')
% Option 3:
clear mystring % As per option 2, interpreted as clear('mystring') so doesn't work
% Option 4:
clear(mystring) % Interpreted as clear('abc') so works as expected
按照您在问题中的建议调用 mcc
时,工具提示显示您实际上可以使用函数语法,尽管 documentation 完全使用命令语法显示。
注意事项
在 MATLAB 中使用括号是标准做法,因为在使用命令语法时您也无法从函数中获取输出值。
同样从上面的第 3 个文档链接,您可以看到一条消息,在使用 MATLAB 时不鼓励使用命令语法。
警告:虽然不带引号的命令语法很方便,但在某些情况下,它可以不正确地使用而不会导致 MATLAB 产生错误。
【讨论】:
谢谢,很好的解释和链接!我想我可以这样调用 mcc: mcc('-m', 'script.m', '-d', pathVariable);它工作正常,即使这似乎没有记录。 我刚刚看到您对 mcc 的编辑,也谢谢您! 别担心,文档只使用命令语法很奇怪,我认为这是因为使用编译器的人被认为更熟悉这种风格。我不知道(并且假设没有)任何使用命令语法专门调用的函数。以上是关于Matlab调用不带括号的函数的主要内容,如果未能解决你的问题,请参考以下文章