2011-04-16 33 views
1

我正在學習MATLAB,並面臨着從給定的double中提取最重要位的問題。我看到了getmsb函數。但是,有沒有一個函數可以讓我說5個最重要的位?MATLAB:提取最重要的位

Anil。

+0

你想5個MSBs,就好像它是一個整數?或者你想要5個MSB中的浮點數表示? – Pablo 2011-04-17 03:15:41

回答

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. 

或者,就像一個班輪:

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

[編輯]順便說一句,在getmsb功能是定點工具箱的一部分,這可能不是在每個MATLAB安裝中都可用。