2012-06-19 54 views
8

我遇到过很多MATLAB代码,其中有%#ok<SAGROW>评论。此评论在不同情况下使用,我无法弄清楚它的含义。%#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 

有此评论其他引用也为instace:

回答

6

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

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

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

2

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

+0

'AGROW'是否告诉MATLAB预先分配数组/矩阵来提高性能,还是只是抑制预分配警告? – Isaac

+0

只需抑制警告。 – glglgl

4

General answer(在尖括号不同的值):

在设定类型msgid:SAGROW - >代码分析器。

对于其他人msgid:<your-ok-msg-id>

编辑: 最短的方式,1.删除评论,2.阅读下划线代码段的codeanalyzer工具提示。

+0

你如何做相反的事? – Eric

+1

@Eric右键单击带有红色下划线的单词,然后选择“Supress [warning-magssage] ...” - >“在此行上”将为您提供禁止此警告的正确代码。 – Adiel