Binary numbers into array
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rosario Frontino
el 27 de Mzo. de 2022
Comentada: Voss
el 27 de Mzo. de 2022
I have a string n of N numbers (like '21325231214523234322' ) and their respective Huffman code ( {'10' } {'01' } {'00' } {'110' } {'111' } )
I would like to create an array with all the stream bits (01 10 00 ...)
stream = zeros(1,N);
for i=1:N
value = str2num(n(i));
stream(i) = str2num(ret{3,value});
end
where ret is a cell array with values, probabilities and then the Huffman codes.
This is not working because the codes starting with 0 will be converted to numbers and the 0s are lost (01 -> 0 , 00 -> 0).
Moreover,
stream(i) = ret{3,value};
is also not working: Unable to perform assignment because the left and right sides have a different number of elements.
How can I create my array?
0 comentarios
Respuesta aceptada
Rosario Frontino
el 27 de Mzo. de 2022
Editada: Rosario Frontino
el 27 de Mzo. de 2022
1 comentario
Voss
el 27 de Mzo. de 2022
This solution relies on the numbers being integers starting with 1, so that you can use them as indices.
What happens if your numbers are like this? (Hint: an error occurs)
n = '76870786769078789877';
ret = { ...
'6' '7' '8' '9' '0'; ...
0.5 0.3 0.1 0.05 0.05; ...
'10' '01' '00' '110' '111'}
try
bitStream = {};
N = numel(n);
for i=1:N
value = str2num(n(i));
bitStream(i) = ret(3,value);
end
catch ME
disp(ME.message);
end % error:
No error occurs in this case with my answer:
[~,idx] = ismember(n,[ret{1,:}]);
bitStream = ret(3,idx)
Más respuestas (1)
Voss
el 27 de Mzo. de 2022
Depending on what exactly you're after, one of these two very similar ways may work:
n = '21325231214523234322';
ret = { ...
'1' '2' '3' '4' '5'; ...
0.5 0.3 0.1 0.05 0.05; ...
'10' '01' '00' '110' '111'}
[~,idx] = ismember(n,[ret{1,:}]);
% 1) stream is a character array of '0's and '1's:
stream = [ret{3,idx}]
% or, 2) stream is a cell array of codewords:
stream = ret(3,idx)
0 comentarios
Ver también
Categorías
Más información sobre Large Files and Big Data en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!