What does %#ok<SAGROW> comment mean in MATLAB?

孤街醉人 提交于 2019-12-06 23:13:09

问题


I've encountered many MATLAB codes which have a %#ok<SAGROW> comments. This comment is used in different circumstances and I can't figure it out what it means.

As an example:

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

There are other references to this comment too, for instace:

  • http://www.codeproject.com/Questions/151765/answer.aspx
  • http://www.scribd.com/doc/69869075/EEE-554-Matlab-Solutions
  • http://www.mathworks.com/matlabcentral/newsreader/view_thread/321047
  • http://www.nd.edu/~jrunkle1/ballis_problem.m

回答1:


It suppresses mlint warnings. In this specific case, it is about not pre-allocating an array.

mlint is one of the static code analysis tools that Matlab has. It finds possible errors and shows warnings.

Edit(1): I've just noticed that your question is about SAGROW, not AGROW. I could not find it. My guess is that it is an old/new mlint syntax.




回答2:


General answer (for different values in the angle brackets):

Type msgid:SAGROW in Preferences -> Code Analyzer.

For others msgid:<your-ok-msg-id>.

edit: shortest way, 1. remove the comment, 2. read the codeanalyzer tooltip of the underline piece of code.




回答3:


I don't know about SAGROW, but AGROW would mean that a given array/vector/matrix <name> might be growing inside a loop. Consider preallocating for speed.



来源:https://stackoverflow.com/questions/11098556/what-does-oksagrow-comment-mean-in-matlab

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!