Replacing non-integer values

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!

Antworten (2)

sixwwwwww
sixwwwwww am 6 Dez. 2013
Bearbeitet: sixwwwwww am 6 Dez. 2013

0 Stimmen

If 'a' is your array then use the following:
a(arrayfun(@(x) ~isinteger(x), a)) = 0;

8 Kommentare

Muneer
Muneer am 6 Dez. 2013
"isinteger", there's what I was looking for. Thanks so much.
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
Muneer am 6 Dez. 2013
The code you posted replaces the entire array with zeros for some reason. I just wanted the numbers that have a decimal place to be replaced with zero. Does matlab classify an non-integer as a non-number or something? ie. 0.5 and 3 are both integers?
sixwwwwww
sixwwwwww am 6 Dez. 2013
Bearbeitet: sixwwwwww am 6 Dez. 2013
use this:
a(arrayfun(@(x) mod(x, 1) ~= 0, a)) = 0
I explained the reason above
Azzi Abdelmalek
Azzi Abdelmalek am 6 Dez. 2013
Why arrayfun?
sixwwwwww
sixwwwwww am 6 Dez. 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
Muneer am 6 Dez. 2013
Thanks, it works great!
sixwwwwww
sixwwwwww am 6 Dez. 2013
you are welcome

Melden Sie sich an, um zu kommentieren.

Kategorien

Gefragt:

am 6 Dez. 2013

Kommentiert:

am 6 Dez. 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by