I don't understand what is the problem.....i tried it, but get an error. So plz help me to solve the problem...
Show older comments
"Write a function called integerize that takes as its input a matrix A of non-negative integers of type double, and returns the name of the “smallest” unsigned integer class to which A can be accurately converted. If no such class exists, the string 'NONE' is returned. For example, if the largest integer A is 14, then the function would return 'uint8', but if the largest integer in A is 1e20, then the function would return 'NONE'."
Answers (5)
Walter Roberson
on 30 May 2015
1 vote
hint: log2()
Image Analyst
on 30 May 2015
Hint: see functions intmax() and max()
mavValue = max(A(:))
if maxValue < intmax('uint8')
and so on...
3 Comments
Muhammad Usman Saleem
on 1 Jun 2015
@image i am using that code now , but getting the below mentioned error...
function integ=integerize(A)
mavValue = max(A(:))
if maxValue < intmax('uint8')
integ='uint8';
if maxValue<intmax('uint16')
integ='uint16';
if maxValue<intmax('uint32')
integ='uint32';
if maxValue<intmax('uint64')
integ='uint64';
else
integ='NONE';
end
end
end
end
Error i got is
Feedback: Your program made an error for argument(s) 0
Your solution is _not_ correct.
guide me where i need corrections.. Thanks in advance
Muhammad Usman Saleem
on 1 Jun 2015
@image in another approach i use..
function integ=integerize(A)
if int(A) && uint(A)
if max(A)<=intmax('uint16')
integ='uint16';
elseif max(A) <= intmax('uint32')
integ='uint32';
elseif max(A) <= intmax('uint64')
integ='uint64';
elseif mod(A,1)=>0
integ='NONE';
end
end
end
but the error remains same as mentioned above..
Image Analyst
on 1 Jun 2015
Muhammad, It looks like you've gotten your own thread started in this other thread so we'll just have the discussion over there.
Mostafa Farhoudi
on 15 Jul 2015
Edited: Walter Roberson
on 16 Jul 2015
function integ=integerize(A)
integ = 'none';
maxValue=max(A(:));
disp(maxValue);
if maxValue <= intmax('uint8')
integ='uint8';
elseif maxValue<=intmax('uint16')
integ='uint16';
elseif maxValue <= intmax('uint32')
integ='uint32';
elseif maxValue <= intmax('uint64')
integ='uint64';
else
integ='NONE';
end
end
charu sharma
on 20 Aug 2015
0 votes
Pranash Azrot
on 25 Aug 2015
yaar mera answer teek see.
function u = integerize(A)
g =max(max(A));
if (g>255 && g<=intmax('uint16'))
u = 'uint16';
elseif (g<0 || g>intmax('uint64'))
u = 'NONE';
elseif (g>intmax('uint16') && g<=intmax('uint32'))
u = 'uint32';
elseif (g>intmax('uint32') && g<=intmax('uint64'))
u = 'uint64';
else
u = 'uint8';
end
Categories
Find more on Data Type Identification in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!