Borrar filtros
Borrar filtros

How to reduce the time?

1 visualización (últimos 30 días)
Shifat
Shifat el 1 de Mzo. de 2012
Hi. I am trying to convert a decimal matrix in to binary form by using following code:
k = 1;
P = ''; %%P is the output matrix
for i = 1 : numel(s) %%s is the input matrix
P(k,1:bin_total) = bin(fi(s(i),1,8,6));
%%Decimal to binary conversion
k = k+1;
end
I am trying to reduce the time because the input matrix may have 1000 elements. So it's taking very long time for converting in to binary.
Can anyone please give me any idea how to make the code more faster?
Thanks.
  7 comentarios
Walter Roberson
Walter Roberson el 7 de Mzo. de 2012
Okay -- signed or unsigned?
Shifat
Shifat el 7 de Mzo. de 2012
Signed.

Iniciar sesión para comentar.

Respuestas (2)

Laurens Bakker
Laurens Bakker el 7 de Mzo. de 2012
Hi Shifat,
the base MATLAB distribution has a function for this:
P = dec2bin( fix(s) );
where fix() cuts off the fractional part. Let me know if this is not fast enough for you. There are some faster ways of doing it, but that gets somewhat involved.
Cheers,
Laurens
  1 comentario
Shifat
Shifat el 7 de Mzo. de 2012
Thank you for your help.
But i need the fractional part too and the also need the bit system be fixed (Like 6 bits for fractional part and 2 bits for integer part.)
I found some thing which seems to me more faster than my previous 'for loop'code (which i posted above):
P = bin(fi(decimal_input_matrix,1, 8, 6)) %8 represents whole binary number and 6 represents the length of fractional part
I found that this code takes almost less than half time if i don't use loop.
If you have anything which works more faster than this, please let me know. Thanks.

Iniciar sesión para comentar.


Shifat
Shifat el 10 de Mzo. de 2012
I am deleting my other post which contains the same subject. Jan Simon answered in that question which helped me a lot. Following answer was given by him:
Pre-allocation!
k = 1;
P = repmat(' ', numel(s), bin_total);
for i = 1 : numel(s) %%s is the input matrix
P(k, :) = bin(fi(s(i),1,8,6));
k = k+1;
end
[EDITED] See these FEX submissions for other decimal to binary conversions:
FEX: floating-number-conversion-to-binary
FEX: conversion-of-fractions
FEX: efficient-convertors-between-binary-and-decimal
  1 comentario
Oleg Komarov
Oleg Komarov el 11 de Mzo. de 2012
Do not delete posts that have been answered.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by