From your description it sounds like you are not also zero-ing out the complex conjugates. You are zero-ing out only the "positive" frequencies, but you also have to zero the corresponding negative frequencies. I'll illustrate this in the following example with two sine waves in noise. I'll remove the 200-Hz sine wave.
t = 0:0.001:1-0.001;
x = cos(2*pi*100*t)+cos(2*pi*200*t)+randn(size(t));
xdft = fft(x);
xdft(201)
xdft(length(x)-201+2)
You see the difference between those is that one is the complex conjugate of the other. You have to zero them both.
xdft([201 length(x)-201+2]) = 0;
xrec = ifft(xdft);
plot(abs(fft(xrec)))
You see now that the 200-Hz component is gone.
Best Answer