保留旧值且不会更改的 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
的一些预存版本是不正确的,PRE
和 POST
结果是完全一样的.我猜它与在我的 run.m 文件中声明为全局的 global kanasta
以及函数有关。我不确定为什么会这样(以前没问题……我的 Matlab 昨晚崩溃了,之后就发生了)。它搞乱了我需要对 PRE
和 POST
进行的任何进一步分析。我还尝试将 PRE
保存到另一个变量,然后 运行 将 POST
的代码保存下来,但它似乎不起作用。我已经多次清除工作区并清除所有变量和命令历史记录并重新启动,但没有任何效果。
有人对 "resetting" 有什么建议吗?或者关于全局变量或者为什么会发生这种情况?
在 Matlab 中,全局变量确实是全局的,而不仅仅是在一个脚本或程序中是全局的。它们对于 matlab 来说并不是完全全局的,但除非被清除,否则它们将保持其值直到 Matlab 会话结束。解决方法是这样写:
clear global;
当你想清除全局变量时。但是,在旧版本的 matlab 中,变量将作为局部变量存在。与往常一样清除。
我在 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
的一些预存版本是不正确的,PRE
和 POST
结果是完全一样的.我猜它与在我的 run.m 文件中声明为全局的 global kanasta
以及函数有关。我不确定为什么会这样(以前没问题……我的 Matlab 昨晚崩溃了,之后就发生了)。它搞乱了我需要对 PRE
和 POST
进行的任何进一步分析。我还尝试将 PRE
保存到另一个变量,然后 运行 将 POST
的代码保存下来,但它似乎不起作用。我已经多次清除工作区并清除所有变量和命令历史记录并重新启动,但没有任何效果。
有人对 "resetting" 有什么建议吗?或者关于全局变量或者为什么会发生这种情况?
在 Matlab 中,全局变量确实是全局的,而不仅仅是在一个脚本或程序中是全局的。它们对于 matlab 来说并不是完全全局的,但除非被清除,否则它们将保持其值直到 Matlab 会话结束。解决方法是这样写:
clear global;
当你想清除全局变量时。但是,在旧版本的 matlab 中,变量将作为局部变量存在。与往常一样清除。