概述
经过一番来回的思考,我想我知道您要达到的目标以及阻碍您前进的道路。
我已经对您的代码进行了编辑,以使其更快,更易读。 大多数情况下,操作花费的时间略高于0.05秒,并且在某些时间点,操作可能比预期的时间长约5毫秒。 当然,您的年龄可能会有所不同。 由于我没有arduino,所以我不知道那里是否有瓶颈。 您还应该尝试使用内置的Matlab探查器对代码进行性能分析(这非常有用),以查看到底是什么导致代码变慢。
我发现减慢代码运行速度的主要原因是您使用了plot函数每次向plot添加一个点。 每次调用此函数时,它都会创建一个新的图形对象。 经过几百次之后,事情变得迟钝了。 相反,您应该只更新已经绘制的数据,然后使用drawnow重新绘制它。
简而言之,解决方案是这样的:
1)用单点初始化绘图并保存图形手柄以备后用:
p1 = plot(0,0,'b*');
2)然后,在循环内部,一旦您的数据数组已更新,就用新数组替换现有绘图中的数据。
set(p1, 'XData', 1:i, 'YData', y(1:i));
3)重新绘制图以反映最新的更新。
drawnow;
drawnow最终还会减慢您的代码的速度,因为它必须在每次迭代时重新绘制越来越大的图。 为了使工作更快,您可能需要较长的时间间隔来刷新图。 例如,以下将每10次迭代刷新一次:
if rem(i,10) == 0
drawnow;
end
完整代码如下。 让我知道您是否还有其他问题。
max
最后
以上就是谨慎机器猫为你收集整理的matlab循环迭代6,matlab - Matlab中每个for循环迭代的速度降低 - 堆栈内存溢出的全部内容,希望文章能够帮你解决matlab循环迭代6,matlab - Matlab中每个for循环迭代的速度降低 - 堆栈内存溢出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复