MATLAB中simulink串行采集块中的一个Bug in MATLAB

A Bug in MATLAB in the simulink serial acquisition block in MATLAB

我只是想分享我解决 Simulink 错误的方法(在 Matlab v2010a 中和相同的暂停指令,这也是在 MATLAB2014a 中发现问题的原因)。

当我通过 simulink 串行采集块获得串行输入时,如果数据输入速率适中(例如超过 100 sample/sec。),我看到第一个 3 秒左右,数据输入会很好,然后几秒钟后会出现非常奇怪的噪音。

通过深入挖掘这个串行采集块的源代码,我看到它正在使用延迟指令'pause(0.001)'并且显然已被用来延迟代码运行 1 ms每采集 1 个样本后。

回答我自己的问题: 我在 MSDN 中找到的一篇标题为“Windows 时间”的文章指出:“GetTickCount 和 GetTickCount64 受限于系统计时器的分辨率,大约为 10 毫秒到 16 毫秒。” [1].这意味着延迟将有效地限制每秒的最大样本数。可以被这个块读取。

我已经删除了 simulink 串行采集块中的这个暂停行(MATLAB R2010(a) 中名为“sserialrb.m”的“串行接收”块的脚本中的第 331 行)并且一切正常嗯

希望这对某人有所帮助!

[1] MSDN,"Windows Time," http://msdn.microsoft.com/en-us/library/windows/desktop/ms725496%28v=vs.85%29.aspx,2012.