代码之家  ›  专栏  ›  技术社区  ›  Robert Dodier

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

  •  3
  • Robert Dodier  · 技术社区  · 7 年前

    我正在Linux上使用MatlabR2018A。我收到警告信息:

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

    有没有办法找出警告所抱怨的变量?

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

    2 回复  |  直到 7 年前
        1
  •  5
  •   Cris Luengo    7 年前

    当您将某个变量声明为全局变量,但该变量已被用作局部变量时,会触发此错误:

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

    global

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

    一旦找到触发错误的变量名,就可以重命名 地方的 使用该名称的变量 全球的 变量不变。

    这是一个对@finkr和@SardarUsama的呼喊,他们帮助我们理解了这个警告信息的含义 MATLAB chat .



    作为 @Durkee suggested , whos global

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

    isglobal used to be a function in MATLAB a long time ago ,但后来被删除)。

        2
  •  3
  •   Durkee    7 年前

    whos global 在你代码里的某个地方

    global global_var
    global_var = 1;
    clear global_var
    whos global