我有m文件(main.m
),我在这个文件中有一些变量。
在文件的最后,我写道:clear all
我想清除所有变量。所以在Matlab中,我写了:main
,以便运行该函数。
当函数完成时,我在MATLAB控制台中写了一个main.m
变量的名称。
例如,我写了变量:data
令人惊讶的是,变量存在。
为什么表达式clear all
不会删除它?
谢谢。
答案 0 :(得分:4)
函数有自己的变量范围。从函数返回时,函数的所有局部变量都将被清除,并且函数调用之前存在的变量和值将被恢复,唯一的区别是刚刚返回的函数的返回值。您可以使用MATLAB调试器轻松地执行此过程,首先确保在第一个函数中定义了一些变量,然后再进入第二个函数(至少在Linux版本中为F11),然后逐步执行第二个函数,最后逐步执行到达return
或函数结束时的第二个函数,您将看到第二个函数的局部变量被清除,第一个函数的变量被恢复。
这意味着您无法清除函数内的工作空间变量,至少不能使用clear all
,因为在函数clear all
内只清除其变量范围内的所有变量。
如果您遵循函数式编程范例,通常您不必担心工作区变量,因为所有重要的是您在自己的函数中创建和修改的变量。