i have a single row vector contains 0s and 1s and want to convert every 3 bits into integer how can i do that??

2 views (last 30 days)
i have a single row vector contains 0s and 1s and want to convert every 3 bits in this vector into integer how can i do that??
i have single row vector contains 0s and 1s values and i need every 3 bits in this vector convert to decimal number
for example
x=[0 1 0 1 1 1 ]
then i want this single row to be converted to decimel every 3 of them to decimal [010],[111]

Accepted Answer

Mathieu NOE
Mathieu NOE on 22 Apr 2022
hello
see below
hope it helps
% dummy data
nbits = 3;
samples = 8;
x = round(rand(1,nbits*samples));
nbits_vect = 2.^((nbits-1:-1:0));
%%%% main loop %%%%
iter = fix((length(x)-nbits)/nbits +1);
for ci=1:iter
start_index = 1+(ci-1)*nbits;
stop_index = min(start_index+ nbits-1,length(x));
int_data(ci) = sum(nbits_vect.*x(start_index:stop_index)); % your interger data
end
figure(1),
plot(int_data,'r'); % your interger data
  6 Comments

Sign in to comment.

More Answers (2)

Bruno Luong
Bruno Luong on 22 Apr 2022
x=[0 1 0 1 1 1 ];
bin2dec(char(reshape(x,3,[])+'0')')
ans = 2×1
2 7

Voss
Voss on 22 Apr 2022
Edited: Voss on 22 Apr 2022
You say you want [010,111] as a result:
x=[0 1 0 1 1 1 ];
xx = reshape(x,3,[]).';
y = zeros(1,size(xx,1));
for ii = 1:size(xx,1)
y(ii) = polyval(xx(ii,:),10);
end
disp(y)
10 111
If you want [2,7] as a result:
for ii = 1:size(xx,1)
y(ii) = polyval(xx(ii,:),2);
end
disp(y)
2 7

Categories

Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!