matlab - 如何找出哪个变量触发了有关全局变量的 Matlab 警告

标签 matlab global-variables

我在 Linux 上使用 Matlab R2018a。我收到警告消息:

“警告:局部变量的值可能已更改以匹配全局变量。 future 版本的 MATLAB 将要求您在使用该变量之前将其声明为全局变量。”

警告伴随着文件名和行号,但该行上有几个变量,所以我想知道消息指的是哪一个。

有没有办法找出警告所提示的变量?

有没有办法把警告变成错误?也许这样可以更容易地解决问题,而不是仅仅容忍它。

最佳答案

此错误是在您将变量声明为全局变量但该变量已用作局部变量的行上触发的:

baz = 3;
% ... much later...
global foo bar baz

要找出这些变量中哪些已被定义,您可以在 global 行设置一个断点,并查看当时存在哪些变量。

您还可以在此行之前添加一个 who 命令,并在生成警告之前观察程序的控制台输出。

一旦找到触发错误的变量名称,您可以使用该名称重命名本地 变量,同时保持全局 变量不变。

感谢@flawr 和@SardarUsama,他们在 MATLAB chat 上帮助弄清了这条警告消息的含义。 .


下面是原始答案的一部分,它显示了一种确定变量是否为全局变量的方法。


作为@Durkee suggested , whos global 将列出全局变量。您可以以编程方式使用它来测试“全局性”:

~isempty(whos('global','varname'))

(请注意 isglobal used to be a function in MATLAB a long time ago ,但已被删除)。

关于matlab - 如何找出哪个变量触发了有关全局变量的 Matlab 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029952/

相关文章:

matlab - 在 matlab 中有效实现张量点积

matlab - 如何做一个频段?

c++ - 使用 OpenCV 的最大熵阈值

matlab - 在matlab中比较两个不同长度的向量

python : multithreading : self as global variable

batch-file - 如何从 FOR 循环中批量为全局变量赋值

javascript - 如何在页面之间共享 JS 变量?

matlab - matlab中未定义函数 'insertObjectAnnotation'错误

javascript - JQuery 插件,Javascript - 如何仅为 JQuery 插件全局变量或 json 对象创建并在函数级别更改此(变量、对象)

javascript - javascript将数据存储在全局变量数组中(或其他更好的方法)