没有括号的Matlab调用函数

zui*_*iqo 3 matlab function parentheses

Matlab脚本调用函数但提供没有括号的参数的情况的正确名称是什么?

例:

clear xx
Run Code Online (Sandbox Code Playgroud)

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

clear('xx')
Run Code Online (Sandbox Code Playgroud)

在Google上搜索解决方案时,如何区分这两种方法?

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

谢谢!

Wol*_*fie 6

当您调用不带括号的函数时,它被称为命令语法.以下是相关文档的三个链接:


奖金回答

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

使用命令语法调用函数时,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
Run Code Online (Sandbox Code Playgroud)

mcc您在问题中建议调用时,工具提示显示您实际上可以使用函数语法,尽管文档完全使用命令语法显示.

提示


笔记

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

同样从上面的第3个文档链接中,您可以看到一条消息,在使用MATLAB时不鼓励使用命令语法.

警告:虽然不带引号的命令语法很方便,但在某些情况下可能会错误地使用它而不会导致MATLAB生成错误.