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



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

当预分配放置在另一个脚本中时,我会收到来自 Matlab 的警告,用于主脚本中的每个参数,关于预分配以提高速度。

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

我很想让你的预分配脚本成为一个函数。然后你可以写一些类似的东西

[myvar1,myvar2,myvar3] = preallocate();

这将允许您一目了然地查看所有预分配变量,并且还可以保持 mlint 安静。

在我的 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

structvars可以在这里找到。请注意,我自己还没有尝试过该软件包,所以我不确定它的效果如何以及速度有多快。

最新更新