function Y = kill_filter(fps,N,fsmp)
  # Returns a Fourier filter that kills 
  # the frequencies listed in {fps} with notch filters.
  # Assumes {N} samples with sampling frequency {fsmp}
  # If a frequency is not exactly 0 or {fsmp/2},
  # also kills the conjugate frequency.
  # 
  # Each row of {fps} must have two columns {f,fsigma};
  # the corresponding notch is a complemented
  # Gaussian bell with mean {f} and deviation {fsigma}
  #
  # All frequencies {f,fsigma,fsmp} are in Hz.
  
  assert(size(fps,2) >= 2)
  assert(mod(N,2)==0)
  dfnyq = N/2; # Discrete Nyquist freq.  May be fractional.
   
  Y = ones(N,1);
  for kf = 1:size(fps,1)
    f = fps(kf,1)
    fsigma = fps(kf,2);
    df = floor(f*N/fsmp + 0.5); # Digital frequency.
    dsigma = fsigma*N/fsmp; # Deviation in digital freq.
    Y = kill_one_in_filter(Y,df,dsigma);
    if (df != dfnyq) && (df != 0)
      Y = kill_one_in_filter(Y,N-df,dsigma);
    end
  end
 
  