Filter löschen
Filter löschen

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

1 Ansicht (letzte 30 Tage)
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]

Akzeptierte Antwort

Mathieu NOE
Mathieu NOE am 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 Kommentare
Aly Khafagy
Aly Khafagy am 24 Apr. 2022
hello Mathew, i need to know what is meant by nbits_vect ?? i cannot understand this variable.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

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

Voss
Voss am 22 Apr. 2022
Bearbeitet: Voss am 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

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by