MATLAB: извлечь наиболее значимые биты - PullRequest
1 голос
/ 17 апреля 2011

Я изучаю MATLAB и сталкиваюсь с проблемой извлечения наиболее значимых битов из данного двойного числа.Я видел функцию getmsb.Но есть ли функция, которая может дать мне, скажем, 5 самых значимых битов?

Анил.

1 Ответ

1 голос
/ 17 апреля 2011

Уже поздно, поэтому я уверен, что есть лучшее решение. Во всяком случае, это похоже на это:

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.

Или как один лайнер:

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

[Редактировать] Кстати, функция getmsb является частью набора инструментов с фиксированной точкой, который может быть недоступен при каждой установке MATLAB.

...