1

私は MATLAB を学習しており、指定された double から最上位ビットを抽出するという問題に直面しています。getmsb 関数を見ました。しかし、5つの最上位ビットを言うことができる機能はありますか?

アニル。

4

1 に答える 1

1

遅いので、もっと良い解決策があると確信しています。とにかく、これはそれを行うようです:

A = rand(1, 1) * 10000
nBits = 5
curBits = ceil(log2(A))
toShift = curBits - nBits
wantedMSB = fix(A / 2^toShift) % This is still a double, feel free to cast.
dec2bin(wantedMSB)             % Result in bitstring form.

または、1 つのライナーとして:

A = rand(1, 1) * 10000
nBits = 5
wantedMSB = fix(A / 2^(ceil(log2(A)) - nBits))

[編集]ところで、このgetmsb関数は Fixed-Point Toolbox の一部であり、すべての MATLAB インストールで利用できるわけではありません。

于 2011-04-16T23:31:11.920 に答える