2010-11-12 262 views
4

我有一個包含一系列整數的向量,我想要做的是取所有數字,將它們轉換成它們相應的二進制形式,並將所有得到的二進制值連接在一起。有沒有簡單的方法來做到這一點?Matlab二進制編碼

例如a = [1 2 3 4] - > b = [00000001 00000010 00000011 00000100] - > c = 00000001000000100000001100000100

回答

4

嘗試:

b = dec2bin(a) 
3

是的,使用dec2bin,然後是字符串連接。

+0

爲什麼沒有這個公認的答案,這是第一次.. – neuronet 2014-10-18 02:20:36

4

正如其他的答案中指出,功能DEC2BIN是,你必須解決這個問題的一個選項。但是,如this other SO question所指出的,在轉換大量值時,它可能是一個非常慢的選項。

對於更快的解決方案,可以代替使用函數BITGET如下:

a = [1 2 3 4];    %# Your array of values 
nBits = 8;     %# The number of bits to get for each value 
nValues = numel(a);   %# The number of values in a 
c = zeros(1,nValues*nBits); %# Initialize c to an array of zeroes 
for iBit = 1:nBits   %# Loop over the bits 
    c(iBit:nBits:end) = bitget(a,nBits-iBit+1); %# Get the bit values 
end 

結果c將是0和1的陣列。如果你想變成一個字符串,你可以使用函數CHAR如下:

c = char(c+48); 
+0

+1提醒我們在比特的Matlab的功能! – Jonas 2010-11-12 03:39:43