我有一個包含一系列整數的向量,我想要做的是取所有數字,將它們轉換成它們相應的二進制形式,並將所有得到的二進制值連接在一起。有沒有簡單的方法來做到這一點?Matlab二進制編碼
例如a = [1 2 3 4] - > b = [00000001 00000010 00000011 00000100] - > c = 00000001000000100000001100000100
我有一個包含一系列整數的向量,我想要做的是取所有數字,將它們轉換成它們相應的二進制形式,並將所有得到的二進制值連接在一起。有沒有簡單的方法來做到這一點?Matlab二進制編碼
例如a = [1 2 3 4] - > b = [00000001 00000010 00000011 00000100] - > c = 00000001000000100000001100000100
嘗試:
b = dec2bin(a)
是的,使用dec2bin
,然後是字符串連接。
正如其他的答案中指出,功能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);
+1提醒我們在比特的Matlab的功能! – Jonas 2010-11-12 03:39:43
爲什麼沒有這個公認的答案,這是第一次.. – neuronet 2014-10-18 02:20:36