3

Simulink R2012a Shift Arithmeticブロックを使用してx << 2、 x が type の 16 ビット固定小数点 Q15 数である場所を計算していfixdt(1,16,15)ます。

この特定のケースでは、オーバーフローはバグではありません。(値 0、16384 = 0.5、-16384 = -0.5、および -32768 = -1.0 をすべて値 0 にマップする必要があります。)

問題は、これが発生するたびに、コマンド コンソールからオーバーフロー警告が吐き出されることです。

 Warning: Overflow occurred. This originated from 'foo/bar/baz/Shift Arithmetic'.

一般的なすべてのブロック、またはすべてのシフト演算ブロックではなく、特定のブロック セット (このシフト動作が意図的なもの) に対してのみオーバーフロー警告を無効にしたいと考えています。これどうやってするの?

4

1 に答える 1

1

これは単純なブロックであるため、警告をトリガーしない独自のブロックを作成することが解決策になる場合があります。

編集:「Matlab Function」で試しました

function y = fcn(u)
y = bitshift(u, 2, 8);

入力 255 とタイプ uint8 で残された 2 ビットのシフト ブロックと同じ結果になりますが、警告はありません。

于 2012-12-06T09:23:10.817 に答える