我正在使用Simulink R2012a Shift Arithmetic块来计算x << 2
,其中x是类型fixdt(1,16,15)
的16位定点Q15数。
在这种特殊情况下,溢出不是错误。 (我希望值0,16384 = 0.5,-16384 = -0.5和-32768 = -1.0全部映射到值0。)
问题是我在命令控制台中发出溢出警告,因为发生了这种情况:
Warning: Overflow occurred. This originated from 'foo/bar/baz/Shift Arithmetic'.
我想仅针对特定的一组块禁用溢出警告(这种移位行为是故意的),而不是一般的所有块或甚至所有Shift算术块。我怎么能这样做?
答案 0 :(得分:1)
由于它是一个简单的块,解决方案可能是构建自己的块,不会触发警告。
编辑: 我试过'Matlab Function'
function y = fcn(u)
y = bitshift(u, 2, 8);
我得到的结果与输入255的2位移位块相同,并且输入uint8但没有警告。