MATLAB点击运行并计时没反应,MATLAB计时器对象陷阱和不良用法

博主在MATLAB中遇到计时器每0.1秒执行导致程序无响应的问题。计时器回调函数执行时间超过周期,阻碍了停止功能。文章探讨了MATLAB的单线程特性及计时器的BusyMode属性,建议设置为'queue'以避免丢失测量数据。此外,提出了计时器频率的不稳定性和考虑使用C语言进行数据采集的可能性。
摘要由CSDN通过智能技术生成

我创建了一个计时器,每0.1秒执行一次。它调用一个函数,该函数读取数据,然后更新对象的属性。当我启动计时器时,MATLAB在命令窗口的底部显示"忙"信号。 MATLAB变得无响应,我无法使用stop()函数暂停计时器。我唯一的办法是使用Ctrl-C。

我确定问题是计时器回调函数的处理时间长于调用周期,并且我认为没有其他MATLAB代码会挤入堆栈/队列中。这使我有点担心依赖计时器。我的目标是连续从多个设备进行测量,将其存储在一个对象中,并需要MATLAB在这些测量之间进行其他操作。另外,我不能错过任何一项测量。

我正在创建一个响应用户输入并为用户提供实时信息的应用程序,因此我选择了一个快速的时期,认为它将产生快速的用户体验。由于我致力于使用MATLAB,因此我想不出比使用计时器对象更好的方法来实现此功能。所以第一个问题是,计时器对象看起来像是我上面描述的工作的正确工具吗?

其次,如果我要使用计时器对象,是否有人可以分享使用计时器的常见错误或陷阱的经验?或者有人对如何最好地实现计时器对象有任何建议?可以同时使用的计时器对象的数量是否有实际限制?确定计时器对象最佳频率的最佳方法是什么?

谢谢!

我认为0.1秒钟将其推向更高的可靠性,尤其是当您同时运行多个计时器时,尤其是希望用户界面也同时响应时。

MATLAB基本上是单线程的。也有例外,例如较低级别的数学例程以多线程方式调用BLAS,从而大大提高了速度。您也可以用多线程C编写MEX代码,然后从MATLAB调用它。但是,基本上所有代码都在一个真正的线程上运行。

计时器对象在某种程度上也是一个例外。创建计时器对象时,在其下方有一个Ja

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值