First, as pointed out by David, your co
de doesn't take into account the properties of floating point numbers. I would strongly advise you read up about it, The floating point guide is a very good starting point. The consequence of it is that your code is not going to work the way you expect. Many numbers cannot be stored exactly and thus many numbers that you think should be a multiple of 0.00005 are not for a computer:
>> mod(0.0006 - 0.00055, 0.00005)
See that for a computer (note that it's not restricted to matlab), the difference between 0.0006 and 0.00055 is not 0.00005. That's because neither 0.0006 nor 0.00055 can be stored exactly, 0.0006 is stored as a number slightly smaller (0.000599999999999999947437878677902745039318688213825225830078125 exactly) and 0.00055 as a number slightly larger (0.000550000000000000033133218391157015503267757594585418701171875) so the difference is slightly smaller than 0.0005 (off by ~8e-20).
So, as is your check is not going to work. That's not even taking into account the other bugs such as checking the difference between index i and i-1 but modifying index i or i+1.
Secondly, you still haven't spelled out what the criteria for garbage is. I'm going to take a guess and assume that all your numbers should be multiple of 0.0005 (taking into account precision of floating point numbers). Note that if numbers are multiple of 0.0005 it makes no sense checking if there difference is also a multiple of 0.0005, it's guaranteed.
tol = 1e-10;
tout(abs(mod(tout, 0.00005)) > tol) = 
Note: 0.00005 is one of these rare numbers that can be stored exactly. So, in the above you could actually do an exact check (but not on the difference!). However, for most other divisors you can't, so it's better to always use a tolerance.