使用for循环绘制一组数字时,例如:
for ei=1:length(E),
hnds(ei) = plot(1:nP, avgR(ei,:), [clrStr(ei),'-'] );
end
在hnds(ei)变量的代码中有一个(着名的)警告:
变量hnds(ei)似乎在每次循环迭代时改变大小。考虑预先分配速度。
但是当我尝试预先分配变量时:
hnds = zeros(1,length(E));
这条新线路还有另一个警告,预分配的细节说:
建议的操作:避免将内存预分配给分配给另一个函数输出的变量。
有没有办法删除此警告,或者应该忽略它?
您可以尝试以相反的顺序迭代以避免警告:
for ei=length(E):-1:1,
hnds(ei) = plot(1:nP, avgR(ei,:), [clrStr(ei),'-'] );
end
在这种情况下,您不需要预先分配(即,没有hnds = zeros(1,length(E));
)。
通过以相反的顺序迭代,在第一次迭代中确定数组大小hnds
并在整个迭代中保持固定。
有关更多信息,请参阅this thread。
只需在行尾添加特殊的%#ok
注释,它将禁用与此行相关的所有警告:
hnds = zeros(1,length(E)); %#ok
您还可以使用特殊的%#ok<specific1, ...>
注释来禁用非常具体的警告但不禁用其他警告。检查这个link的详细信息。
您可以在“首选项”中将其停用:
(Matlab 2013b)
我认为不可能在单个脚本的这个特定循环中抑制这个特定的警告,只是全局的。它与命令窗口中显示的警告不同,它们可以是suppressed individually。
编辑:I was wrong.