Floor function for int8
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Walter Roberson
am 1 Aug. 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) ?
Akzeptierte Antwort
Mike Hosea
am 1 Aug. 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 Kommentare
Mike Hosea
am 2 Aug. 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.
Weitere Antworten (2)
Sean de Wolski
am 1 Aug. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!