9

我遇到了许多带有%#ok<SAGROW>注释的 MATLAB 代码。此评论用于不同的情况,我无法弄清楚它的含义。

举个例子:

i = 1; 
flag = true;
for l = 1:k
    while(flag==true)
        if(probs(i)~=0)
            leaves(l).val = i-1; %#ok<*SAGROW>
            leaves(l).zero = '';
            leaves(l).one = '';
            leaves(l).prob = probs(i);
            i = i + 1; 
            flag = false;
        else
            i = i+1;
            flag = true;
        end
    end
flag =true;
end

还有其他对此评论的引用,例如:

4

3 回答 3

7

它抑制mlint警告。在这种特定情况下,它是关于不预先分配数组。

mlint是 Matlab 拥有的静态代码分析工具之一。它会发现可能的错误并显示警告。

编辑(1):我刚刚注意到您的问题是关于SAGROW,而不是AGROW。我找不到。我的猜测是它是一种旧的/新的 mlint 语法。

于 2012-06-19T09:55:47.250 回答
6

一般答案(对于尖括号中的不同值):

输入msgid:SAGROW首选项-> 代码分析器。

为他人msgid:<your-ok-msg-id>

编辑: 最短的方法,1.删除注释,2.阅读下划线代码的代码分析器工具提示。

于 2014-09-09T22:26:25.273 回答
3

我不知道SAGROW,但AGROW意味着给定的数组/向量/矩阵<name> might be growing inside a loop. Consider preallocating for speed

于 2012-06-19T09:58:11.887 回答