2011-11-24 60 views
0

我有一個長度爲240000個元素的比特數組。這個數組代表一個收到的數字傳輸。將比特數組分組到字節數組中

我想將元素數量減少到1,300,000,其中每個元素代表序列中的8位(或一個字節)。

另外我想這樣做,而不使用任何循環。我已經玩過重塑命令,但是我一直無法實現它的工作。

提供(16位,而不是240000)澄清:

Input: [0, 0, 0, 0, 0, 0, 0, 1; 0, 0, 0, 0, 0, 0, 1, 0,] 
Output: [00000001, 00000010] 

預先感謝您爲您的建議。

回答

0

這是你可能想嘗試的東西。輸出爲字符串格式,這是我的猜測是,你希望所有的零展現了一下:

clear all; 
a = [0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0]; 
newsize = length(a)/8; 
c = ''; 
b = cellstr(''); 
for j = 1:newsize 
    c = [c int2str(a((8*(j-1)+1):(8*(j))))]; 
    b = [b cellstr(c)]; 
    c = ''; 
end 
b = b(2:end); 

只有一個for循環。

輸出是:

b: ['0 0 0 0 0 0 0 1','0 0 0 0 0 0 1 0'] 
0

我發現經由num2str和cellstr它轉換爲字符串,然後除去所有的空格工作好:

i=[0, 0, 0, 0, 0, 0, 0, 1; 0, 0, 0, 0, 0, 0, 1, 0,]; 

i=cellstr(num2str(i)); 
o=regexprep(i,'[^\w'']',''); 

輸出: O =

'00000001' 
'00000010' 

請注意,格式現在仍然是一個字符串,以保持所有非i重要的前導零。

+0

不幸的是,num2str函數不能處理我使用的位數,並最終截斷我的函數。但是我確實知道了,所以我會發布答案。 – dfmuir