我在main.m中的每个循环迭代中都有一些参数改变了大小。我已将preallocations放在另一个名为preallocation.m的脚本中。
当预分配放在另一个脚本中时,我会收到Matlab的警告,告知主脚本中有关为了提高速度而预先分配的每个参数。
有没有办法删除这些警告?如果我添加另一个需要预先分配的参数而忘记预分配,我希望得到该参数的警告。
答案 0 :(得分:1)
我很想让你的预分配脚本成为一个功能。然后你可以写点像
[myvar1,myvar2,myvar3] = preallocate();
这样您就可以一目了然地查看所有预分配的变量,并且还可以保持mlint安静。
答案 1 :(得分:0)
在我的MATLAB版本(R2014b)中,通过右键单击具有波浪形红线的变量来完成此操作,然后选择选项Suppress "The variable myVar appears to..."
。然后,您可以选择抑制此单行,整个文件中此类型的所有警告,或所有文件中此类型的所有警告。
编辑:如果您的MATLAB版本没有此上下文菜单选项,您可以将%#ok<SAGROW>
添加到违规行的末尾,如下所示:
someVar(ii+1) = someVar(ii) + someConstant; %#ok<SAGROW>
如果您不想要这些警告并且不使用返回许多变量的预分配函数,那么您还可以执行以下操作:
function init = preallocate()
init.a = some stuff;
init.b = some stuff;
...
end
%% actual script
init = preallocate()
structvars(init); % using structvars from file exchange
可以找到{p> structvars
here。请注意,我自己没有试过这个包,所以我不确定它的效果如何以及速度有多快。