在Matlab中使用函数名称警告变量

时间:2012-09-12 09:53:08

标签: function matlab variables warnings variable-assignment

有时我不小心声明了具有函数名称的变量。

这是一个构造的例子:

 max(4:5) % 5
 max(1:10)=10*ones(10,1); % oops, should be == instead  of = 
 max(4:5) % [10 10]

目前我总是发现这一点很困难,尤其是我不经常使用的功能名称。

有没有办法让matlab对此发出警告?最好在屏幕的右侧看到这个以及其他警告,但我愿意接受其他建议。

3 个答案:

答案 0 :(得分:3)

由于Matlab允许您重载内置功能,因此在使用现有名称时不会收到任何警告。

但是,有一些技巧可以将现有功能重载的风险降至最低:

  • 使用explicitFunctionNames。功能maxIndex而不是max的可能性要小得多。

  • 经常使用“Tab”键。 Matlab将自动完成路径上的函数(以及您之前声明的变量)。因此,如果变量自动完成,则它已经存在。如果您不记得它是否也是一个函数,请点击“F1”以查看是否存在帮助页面。

  • 使用函数而不是脚本,以便工作区中“错误”分配的变量不会弄乱您的代码。

答案 1 :(得分:1)

我很确定mlint也可以检查。

通常我会尽可能地将代码包装到函数中。这样,这种覆盖的范围仅限于函数的范围 - 所以除了偶然的假设之外,没有持久的问题。

答案 2 :(得分:0)

如有疑问,请检查:

exist max
ans = 
  5

查看help exist,您可以看到“max”是一个函数,不应该将其指定为变量。

 >> help exist
exist  Check if variables or functions are defined.
exist('A') returns:
  0 if A does not exist
  1 if A is a variable in the workspace
  2 if A is an M-file on MATLAB's search path.  It also returns 2 when
       A is the full pathname to a file or when A is the name of an
       ordinary file on MATLAB's search path
  3 if A is a MEX-file on MATLAB's search path
  4 if A is a MDL-file on MATLAB's search path
  5 if A is a built-in MATLAB function
  6 if A is a P-file on MATLAB's search path
  7 if A is a directory
  8 if A is a class (exist returns 0 for Java classes if you
    start MATLAB with the -nojvm option.)