我只想分享一下我在Simulink中解决问题的方法(在Matlab中,v2010a和相同的暂停指令,这也是MATLAB2014a中问题的原因)。
当我通过simulink串行采集块获得串行输入时,如果数据输入速度适中(比如超过100个样本/秒),我看到前3秒左右,数据输入就会很好,那么在这几秒钟之后,会出现一个非常奇怪的噪声。
通过深入挖掘这个串行采集块的源代码,我发现它使用的是延迟指令‘pause(0.001)’,并且在每次采集一个样本之后,显然被用来将代码延迟运行1 ms。
发布于 2017-08-12 10:16:58
回答我自己的问题:我在MSDN中找到了一篇题为“Windows”的文章:“GetTickCount和GetTickCount64仅限于系统定时器的分辨率,大约为10毫秒到16毫秒。”1.这意味着延迟将有效地限制每秒最大采样数。可以被这个块读取。
我在simulink串行采集块中删除了这条暂停线(在MATLAB R2010(A)中名为“serialrb.m”的“串行接收”块的脚本中,第331行)并且一切都运行良好。
希望这能帮上忙!
1 MSDN,"Windows“,http://msdn.microsoft.com/en-us/library/windows/desktop/ms725496%28v=vs.85%29.aspx,2012年。
https://stackoverflow.com/questions/28794360
复制相似问题