我是靠谱客的博主 谨慎机器猫,最近开发中收集的这篇文章主要介绍matlab循环迭代6,matlab - Matlab中每个for循环迭代的速度降低 - 堆栈内存溢出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

经过一番来回的思考,我想我知道您要达到的目标以及阻碍您前进的道路。

我已经对您的代码进行了编辑,以使其更快,更易读。 大多数情况下,操作花费的时间略高于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循环迭代的速度降低 - 堆栈内存溢出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部