有时我不小心声明了具有函数名称的变量。
这是一个构造的例子:
max(4:5) % 5
max(1:10)=10*ones(10,1); % oops, should be == instead of =
max(4:5) % [10 10]
目前我总是发现这一点很困难,尤其是我不经常使用的功能名称。
有没有办法让matlab对此发出警告?最好在屏幕的右侧看到这个以及其他警告,但我愿意接受其他建议。
答案 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.)