保留旧值且不会更改的 Matlab 中的全局变量

Global variable in Matlab that retains an old value and won't change

我在 Matlab 中创建了一个函数,并使用以下 run.m 文件 运行 它。

global kanasta
EEG_multitaper_autocor_SO_maheen_final(ALLEEG_LANCE_POST,'All','Cz-CPz',3,1,1,1)
POST=kanasta;

其中 kanasta 是从函数 EEG_multitaper_autocor_SO_maheen_final 生成的变量,ALLEEG_LANCE_POST 是数据结构。

从我从 运行 中得到的任何 kanasta(这是一个数组),我将它存储在 POST 中,如图所示。

然后我更改代码,以便 运行 以下内容:

global kanasta
EEG_multitaper_autocor_SO_maheen_final(ALLEEG_LANCE_PRE,'All','Cz-CPz',3,1,1,1)
PRE=kanasta;

这里我用的ALLEEG_LANCE_PRE也是一个数据结构,结构相同只是数据不同,其他和ALLEEG_LANCE_POST完全一样。

我发现当我这样做时,kanasta 的一些预存版本是不正确的,PREPOST 结果是完全一样的.我猜它与在我的 run.m 文件中声明为全局的 global kanasta 以及函数有关。我不确定为什么会这样(以前没问题……我的 Matlab 昨晚崩溃了,之后就发生了)。它搞乱了我需要对 PREPOST 进行的任何进一步分析。我还尝试将 PRE 保存到另一个变量,然后 运行 将 POST 的代码保存下来,但它似乎不起作用。我已经多次清除工作区并清除所有变量和命令历史记录并重新启动,但没有任何效果。

有人对 "resetting" 有什么建议吗?或者关于全局变量或者为什么会发生这种情况?

在 Matlab 中,全局变量确实是全局的,而不仅仅是在一个脚本或程序中是全局的。它们对于 matlab 来说并不是完全全局的,但除非被清除,否则它们将保持其值直到 Matlab 会话结束。解决方法是这样写:

clear global;

当你想清除全局变量时。但是,在旧版本的 matlab 中,变量将作为局部变量存在。与往常一样清除。