Replacing non-integer values
Show older comments
I have an array of all numeric values but it is a mix of integers and non-integers. How could I replace an non-integer with 0, for example? Also, the array is fairly large (about 130k rows).
Thanks in advance!
Answers (2)
Azzi Abdelmalek
on 6 Dec 2013
a(ceil(a)~=a)=0
If 'a' is your array then use the following:
a(arrayfun(@(x) ~isinteger(x), a)) = 0;
8 Comments
Muneer
on 6 Dec 2013
sixwwwwww
on 6 Dec 2013
iit works for integer type values only. if you have data in default MATLAB format(double type) then you should use the following:
a(arrayfun(@(x) mod(x, 1) ~= 0, a)) = 0
Because in case of default MATLAB format data it will make all the values 0 because they are not integer
Muneer
on 6 Dec 2013
Azzi Abdelmalek
on 6 Dec 2013
Why arrayfun?
sixwwwwww
on 6 Dec 2013
it could be done both ways but I am learning about arrayfun and cellfun as well so I used it. Since both solutions work well so I posted this one
Muneer
on 6 Dec 2013
sixwwwwww
on 6 Dec 2013
you are welcome
Categories
Find more on Structures 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!