2012-06-19 83 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