在另一个文件中完成预分配时删除预分配警告

时间:2015-03-09 15:04:03

标签: matlab allocation

我在main.m中的每个循环迭代中都有一些参数改变了大小。我已将preallocations放在另一个名为preallocation.m的脚本中。

当预分配放在另一个脚本中时,我会收到Matlab的警告,告知主脚本中有关为了提高速度而预先分配的每个参数。

有没有办法删除这些警告?如果我添加另一个需要预先分配的参数而忘记预分配,我希望得到该参数的警告。

2 个答案:

答案 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。请注意,我自己没有试过这个包,所以我不确定它的效果如何以及速度有多快。