不带括号的Matlab调用函数

Matlab Calling Functions without parentheses

对于 Matlab 脚本调用函数但提供不带括号的参数的情况,正确的名称是什么?

示例:

clear xx

或者,我可以使用括号并使用变量名称传输字符串:

clear('xx')

在谷歌搜索解决方案时如何区分这两种选择?

奖励问题:如何将变量的内容放入不使用括号的调用中?具体来说,使用带有动态 -o filename 选项的 mcc 的构建脚本;用括号调用 mcc 也是可以接受的,但我不知道如何 google ,因此这个问题。

谢谢!

当你调用一个没有括号的函数时,它被称为命令语法。以下是相关文档的三个 link:


加分回答

使用命令语法时不能使用变量。来自文档:

When calling a function using command syntax, MATLAB passes the arguments as character vectors.

所以它会像这样工作:

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 个文档 link 中,您可以看到一条消息,劝阻在使用 MATLAB 时使用命令语法。

Caution: While the unquoted command syntax is convenient, in some cases it can be used incorrectly without causing MATLAB to generate an error.