Write a function called integerize that takes as its input a matrix A of integers of type double, and returns the name of the “smallest” signed integer class to which A can be converted without loss of information.
Mostra commenti meno recenti
function text = integerize (A)
minimo = min(min(A));
i8 = intmin('int8'); maxi8 = intmax('int8');
i16 = intmin('int16'); maxi16 = intmax('int16');
i32 = intmin('int32'); maxi32 = intmax('int32');
i64 = intmin('int64'); maxi64 = intmax('int64');
if minimo >= i8 && minimo <= maxi8
text = 'int8';
elseif minimo >= i16 && minimo <= maxi16
text = 'int16';
elseif minimo >= i32 && minimo <= maxi32
text = 'int32';
elseif minimo >= i64&& minimo <= maxi64
text = 'int64';
else
text = 'NONE';
end
My function make an error for argument: A = [128 127; -127 0]. However, if I test it with argument A = -127 is correct.
1 Commento
Stephen23
il 21 Mar 2018
Your code does not check if the maximum value can be encoded with that integer class.
Risposta accettata
Più risposte (2)
Tony Mohan Varghese
il 21 Mar 2018
0 voti
Not able to reproduce the error. Please specify the complete error and the types of inputs used.
RAMAKANT SHAKYA
il 7 Feb 2019
function cls=integerize(a)
if isscalar(a)
if a>0
mina=0;
maxa=a;
else
maxa=0;
mina=a;
end
else
mina=min(a(:));
maxa=max(a(:));
end
if mina>=-2^7 && maxa<=(2^7-1)
cls='int8';
elseif mina>=-2^15 && maxa<=(2^15-1)
cls='int16';
elseif mina>=-2^31 && maxa<=(2^31-1)
cls='int32';
elseif (mina>=-2^63) && maxa<(2^63-1)
cls='int64';
else
cls='NONE';
end
end
Categorie
Scopri di più su JSON Format in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!