使用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));
此新行还有另一个警告,并且在预分配的详细信息中说:
建议采取的措施:避免将内存预分配给分配给的变量 另一个函数的输出。
有没有办法删除此警告,或者应该忽略它?
答案 0 :(得分:4)
您可以在偏好设置:
中停用它
(Matlab 2013b)
我认为不可能在单个脚本的某个循环中抑制此特定警告,只是全局。 它与命令窗口中显示的警告不同,它们可以是suppressed individually。
修改:I was wrong.
答案 1 :(得分:4)
您可以尝试以相反的顺序迭代以避免警告:
for ei=length(E):-1:1,
hnds(ei) = plot(1:nP, avgR(ei,:), [clrStr(ei),'-'] );
end
在这种情况下,您无需预先分配(即,没有hnds = zeros(1,length(E));
)。
通过以相反的顺序迭代,数组大小hnds
在第一次迭代中确定,并在整个迭代过程中保持不变。
有关详细信息,请参阅this thread。
答案 2 :(得分:4)
只需在该行的末尾添加特殊%#ok
条评论,它就会停用与该行相关的所有警告:
hnds = zeros(1,length(E)); %#ok
您还可以使用特殊%#ok<specific1, ...>
注释来仅禁用非常具体的警告,而不禁用其他警告。查看此link了解更多详情。