2012-05-31 471 views
0

我有m文件(main.m),并且我在这个文件中有一些变量。matlab清除全部不起作用

在文件的结尾,我写道:clear all

我要清除所有的变量。所以在Matlab中,我写道:main,以便运行该功能。

当函数完成时,我在MATLAB控制台中写入了一个变量main.m的变量名称。

例如,我写的变量:data

令人惊讶地,该变量存在。为什么clear all不会删除它?

谢谢。

回答

4

函数有自己的变量作用域。当你从一个函数返回时,函数的所有局部变量都被清除,紧接在函数调用之前存在的变量和值被恢复,唯一的区别是你刚刚返回的函数的返回值。通过使用MATLAB调试器,您可以轻松地遵循这个过程,首先确保在第一个函数中定义了一些变量,然后进入第二个函数(至少在Linux版本中为F11),然后遍历第二个函数并最终步出当您到达return或函数结束时的第二个函数,您将看到第二个函数的局部变量被清除并且第一个函数的变量被恢复。

这意味着您不能清除函数中的工作区变量,至少不要使用clear all,因为在函数clear all中只会清除其变量范围内的所有变量。

如果您遵循函数式编程范例,通常您不必担心工作区变量,因为所有重要的是您在自己的函数中创建和修改的变量。

+0

我明白了,谢谢! –