2014-04-15 74 views
2

我有一個大的位流。 (例如10110001010101000 ..... 001大小成千上萬)如何將一個大流位分配到一個列向量

我想將這個比特流分配到一個列向量x中。

x = zeros(n,1); 

我試過使用一些mod或rem操作,會有一些問題。

我想它是由整數大小造成的。

我想問問有沒有什麼好方法可以解決這個問題?

感謝您的閱讀。

+0

如何這個比特流代表了什麼? –

+0

你的意思是我的原始數據?我從.txt文件複製了這些位,數據是「10100101010101010100」(二進制位流),例如需要20位長度。 – Liam

+0

它存儲在一個字符串中嗎? –

回答

1

假設,例如:

x = '10100101010101010100'; 

你可以把它變成一個合乎邏輯的列向量是這樣的:

x = (x == '1')'; 
+0

我在代碼中發現了我的錯誤。現在它適用於你的方法。謝謝你的幫助! – Liam

+0

不客氣。 :) –

1

你也可以使用一個簡單的減法招用的0 ASCII值 -

x-'0' 

採樣運行 -

>> x = 

00101011001 

>> x-'0' 

ans = 

    0  0  1  0  1  0  1  1  0  0  1 

然後,轉置矩陣以獲得列向量 - [x-'0']'

+0

感謝您的建議。讓我學習一個新的竅門。 – Liam

1

考慮在加載時在處理的早期解決問題。每個「0」 /「1」字符被存儲爲字節,所以加載包含所述字符代碼字節(無符號字符或uchar),然後轉換成字符代碼在正確的0/1值:

fid = fopen('binchars.txt','r'); 
digits = fread(fid,'uchar') - 48 
fclose(fid); 
+0

真的非常感謝您的建議。現在我可以自動從.txt讀取。 :) – Liam

+0

@Liam太棒了!當你得到代表(15)時,請投票答覆。 :) 謝謝! – chappjc

+0

@Liam你走了,現在你可以投票:) – Divakar

相關問題