FIR filter not eliminating out of band noise? I have a simple FIR filter that should eliminate all lower frequencies:

H = zeros(60,1);
H(30:end) = 1+1i;
H = [H;conj(flipud(H(2:end)))]; % double sided
h= ifft(H);

Then I assign a sample time to generate a time vector:

dT = 0.002;
Tspan = dT*length(h);
dF = 1/Tspan;

Here my nyquist is 250Hz.  So the filter should eliminate everything below 125Hz.

I generate a signal at 15Hz, and convolve it with the filter coefficients.  

t = 0:dT:5;
x = cos(2*pi*15*t);


But, I get an output signal that clearly does not have the 15Hz eliminated:

Input signal above, response signal below


Below is the FIR filter (plotted single sided):


Does it look like my convolution algorithm is incorrect? Or am I misunderstanding something?

Any help is appreciated!

Thanks
You can solve your problem by an fftshift of the impulse response, as this line shows:

h = fftshift( real( ifft(H)) );


now it should work. 

NOTE that there will be a transient of length about $60$ samples (half the linear phase FIR filter length) at the beginning of the convolution output, after which the steady state result emerges...