Matlab无括号调用函数

7

在Matlab脚本调用函数时,如果不加括号提供参数,正确的术语是什么?

举个例子:

clear xx

或者,我可以使用括号并传递一个包含变量名称的字符串:

clear('xx')

当我在谷歌上寻找解决方案时,我该如何区分两种选择?

奖励问题:如何将变量的内容放入不使用括号的调用中?具体而言,使用动态 -o 文件名 选项的构建脚本;如果使用括号调用mcc也可以接受,但我不知道如何搜索,因此提出这个问题。

谢谢!


https://www.mathworks.com/matlabcentral/answers/92537-how-do-i-pass-arguments-into-and-out-of-my-standalone-executable - houtanb
嗨,谢谢提供链接。这个链接涉及从shell调用已编译的可执行文件。我问的是matlab脚本内部的区别,即*.m文件。 - zuiqo
1个回答

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

额外答案

使用命令语法时无法使用变量。根据文档:

当使用命令语法调用函数时,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时,工具提示会显示您实际上可以使用函数语法,尽管文档完全使用命令语法显示。

tooltip


注释

在MATLAB中使用方括号是标准做法,因为当使用命令语法时,您也无法从函数中获取输出值。

此外,在上述第三个文档链接中,您可以看到一条消息,不鼓励在使用MATLAB时使用命令语法。

注意:虽然未引用的命令语法很方便,但在某些情况下,它可能会被错误地使用而不会导致MATLAB生成错误。


谢谢,解释和链接都很好!我发现我可以这样调用mcc:mcc('-m','script.m','-d',pathVariable);尽管这似乎没有记录下来,但它运行得很好。 - zuiqo
我刚刚看到你关于mcc的编辑,也谢谢你! - zuiqo
不用担心,文档只使用命令语法有点奇怪,我猜是因为使用编译器的人被认为更熟悉那种风格。我不知道是否有任何函数是专门使用命令语法调用的(我假设没有)。 - Wolfie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接