【发布时间】:2016-11-16 20:14:01
【问题描述】:
我想知道在运行 m 文件时如何使用在 Matlab R2015a 的工作区中定义的变量覆盖内部函数。
我的意思是如果我定义:
function test
fun1
clear input
load test
plot(input)
return
function fun1
input=1:10;
save('test.mat','input')
return
我运行测试,然后我得到:
Error using input
Not enough input arguments.
Error in test (line 8)
plot(input)
Matlab 将输入作为其内置函数。
你知道如何解决这个问题(不改变变量名)吗?
谢谢。
【问题讨论】:
-
您永远不应该覆盖内置函数。 (为避免此类错误)
-
但是如果你创建一个变量或一个新的.m文件与一个内置函数的名字完全相同,这个内置函数将被“覆盖”。
-
@obchardon 我不同意。如果您知道自己在做什么,那么这样做绝对没有问题 - 例如在为自定义类重载运算符时(
plus()等)。 MATLAB 甚至提供了builtin函数(“从重载方法执行内置函数”),以便在需要时调用原始版本。 || cardogar - 使用load“生成变量”是不好的做法。一个更好的方法是A=load(...); var = A.someName,这对于 mlint 和人类来说都不太容易混淆。 -
@obchardon 如果加载变量,则不会覆盖内置函数。非常感谢 Dev-iL 可以轻松解决我的问题,因为我无法在实际问题中更改 mat 文件。
-
@cardogar 我很糟糕,我正在使用覆盖内置函数的八度音程