i have a stream of bits(1 and o), when i save these bit , like i have 128 bits, b1 contains 1 to 10 bits, b2 contain 11 to 20 and so on. Now i got a problem that when i save these bits in b1, b2 , b3 and so on. and want to retrieve, it gives value instead of binary digits, so to solve this issue, i used bitget command but it only support 52 digits, while my requirement is 128

4 Kommentare

Jos (10584)
Jos (10584) am 19 Feb. 2014
How is your stream of bits stored? As a string or a (logical) array of 0's and 1's? And how do you split this stream into the separate 10 bit variables?
Some example (pseudo-)code would really help!
Raza
Raza am 19 Feb. 2014
using for loop i am saving 10 10 bit
Jos (10584)
Jos (10584) am 19 Feb. 2014
Please elaborate ...
Raza
Raza am 19 Feb. 2014
i have a stream of bits (1 and 0) , let assume its length is 40. now using for loop i am saving first ten bits in b1, next ten bits in b2 and so on...

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Mischa Kim
Mischa Kim am 19 Feb. 2014

0 Stimmen

Raza, you can retrieve the bit pattern by concatenating the cell strings:
[r, c] = size(b);
bit_stream = [];
for ii = 1:c
bit_stream = strcat(bit_stream,b{ii});
end
disp(bit_stream)

2 Kommentare

Jos (10584)
Jos (10584) am 19 Feb. 2014
STRCAT can concatenate an infinite number of arguments. In Mischa's nice answer you can exploit comma-separate list expansion and get rid of the for-loop:
b = {'101','000','111','010','101'} % shortened example
bitstream = strcat(b{:})
Raza
Raza am 19 Feb. 2014
Bearbeitet: Raza am 19 Feb. 2014
Thanks man, but still got a problem, let me tell u complete detail. i am taking text as a input then i am converting this text into 8 bit binary. and these 8 bits are combined. now i want to separate 128 bits. for example i have text entered "Matlab is good language for coding." and in bits form it is "0101010100010010100100010100100101010101001010..." let assume its length is 256. now i want 128 128 block of bits? i am just stuck in last part

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jos (10584)
Jos (10584) am 19 Feb. 2014

0 Stimmen

You can split the string into cells
% (smaller) example
MyStr = '10100101010101010010101010101010' ; % a string of arbitrary length
N = 5 ; % the size of each block (in your case 128).
maxN = numel(MyStr)
ix0 = 1:N:maxN
fh = @(X) MyStr(X:min((X+N-1),maxN))
B = arrayfun(fh,ix0,'un',0)
% now B{K} holds the K-th block of N bits of S
MyStrToo = cat(2,B{:})
isequal(MyStrToo, MyStr) % check!

Tags

Gefragt:

am 19 Feb. 2014

Beantwortet:

am 19 Feb. 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by