Borrar filtros
Borrar filtros

Speeding bitand / bitshift and type conversion

4 visualizaciones (últimos 30 días)
C R
C R el 9 de Mzo. de 2020
Comentada: C R el 10 de Mzo. de 2020
We have a uint32 data word that is made of two uint16 variables, the first 16 bits is variable #1, the second 16 bits is variable #2. To convert, we are using bitand and type casting:
% Take 32-bit DataWord, convert into two 16-bit variables:
Var1 = uint16(bitshift(bitand(DataWord1,uint32(4294901760)),-16)); % 4294901760 = 0b11111111111111110000000000000000
Var2 = uint16(bitand(DataWord1,uint32(65535))); % 65535 = 0b00000000000000001111111111111111
We do this on an incoming data stream, and unfortunatley, our code above is too slow.
Originally we were using bitget, but it returns a row vector of bits, so getting that row vector into a single uint16 variable was even slower.
Thanks for any help to speed up the above.

Respuestas (1)

James Tursa
James Tursa el 9 de Mzo. de 2020
Editada: James Tursa el 9 de Mzo. de 2020
Try this:
DataWord16 = typecast(DataWord1,'uint16'); % shared data copy for later versions of MATLAB
Var1 = DataWord16(1:2:end);
Var2 = DataWord16(2:2:end);
  3 comentarios
James Tursa
James Tursa el 9 de Mzo. de 2020
Good point.
C R
C R el 10 de Mzo. de 2020
For the data set I am working on this really sped things up. Thanks for the help!

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by