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调用不带括号的函数的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 中怎么不带括号的调用函数

JavaScript 函数调用时带括号和不带括号的区别

Python调用函数带括号和不带括号的区别

调用不带括号的函数

调用不带括号的函数时如何传递参数[Javascript]

调用不带括号的 JS 函数? [复制]