Floor function for int8
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I want to round down (floor) variable defined as int8 without converting to double !
for example: a=int8(8.6);
I want the result will equal to 8 instead of 9. Is there way to do or it impossible (without converting to double) ? The reason I need it, because I work with large matrix (25000x25000) of int8.
Thanks Alex
2 commentaires
Walter Roberson
le 1 Août 2011
To check the circumstances: do you have something like
int8(86) ./ int8(10)
and you want the result to be int8(8) instead of int8(9) ?
Réponse acceptée
Mike Hosea
le 1 Août 2011
Using your later example,
idivide(a,4,'floor')
does what you want there. I prefer to make both arguments integers of the same type, so I would probably have written
idivide(a,int8(4),'floor').
Note that the default option for idivide is 'fix', which might be what you want. Obviously, 'floor' and 'fix' are the same for non-negative quotients. -- Mike
3 commentaires
Mike Hosea
le 2 Août 2011
You're welcome. :) As I read the question and my response again, I think I should have made it more clear that both arguments need to be integers of the same type in order to avoid a cast to double inside of IDIVIDE.
Plus de réponses (2)
Sean de Wolski
le 1 Août 2011
A = int8(magic(10));
B = int8(5);
idx = (mod(A,B)>(B/2)); %elements that need to be reduced.
C = A./B;
C(idx) = C(idx)-1;
0 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!