Un filtro de Kalman es genial si no se conocen todos los estados del sistema, en realidad es un sistema de control adaptativo o de tipo observador que utiliza la estimación de estados para rellenar los huecos dejados por el ruido.
Los estimadores de estado de Kalman o Luenberger son excelentes para sistemas bien definidos, con mucho ruido, en los que se pueden observar ciertos estados y reducirlos esencialmente a lo que "deberían ser" si todos los estados del sistema fueran observables.
Así que para su sistema, siempre y cuando usted no está aliasing sus entradas con la FFT que no debería necesitar ninguno de los filtros más loco y probablemente puede ir con un sistema de control PID utilizando un FIR o IIR.
Además, ya que no estás totalmente seguro de cuál es el sistema que estás modelando, sería una buena idea asegurarte de que tu señal no está siendo borkeada por la FFT y tratar de hacer que esa señal sea lo más limpia posible como entrada antes de pasar a filtrar el ruido y las perturbaciones, de esa manera estás haciendo tu trabajo de control/procesamiento de la señal lo más fácil posible para ti.
ADDENDUM: Acabo de leer la respuesta de TomL, y tiene una pizca de verdad. Matlab y Simulink son geniales para este tipo de problemas, con la caja de herramientas DSP integrada de Matlab puedes construir fácilmente la mayoría de los trabajos de procesamiento de señales fáciles e intermedios y con su nueva caja de herramientas HDL, si estás usando VHDL o Verilog, puedes incluso obtener el código para ti. Además, una vez que el bloque IP está construido, puedes introducirlo en una simulación de Simulink con una/su configuración de FFT y señal, de modo que puedes probar rápida y fácilmente la validez general de los diferentes tipos y métodos de filtrado sin tener que recurrir a probar diferentes construcciones en cualquier lenguaje/pila en la que estés trabajando. Así, una vez que elijas el método que quieras, podrás probarlo fácilmente para ti, tus inversores o tus superiores. Añadir esto a cualquier pila de controles/procesamiento de señales te hace la vida mucho más fácil a largo plazo que es con lo que empiezo cualquiera de mis trabajos/proyectos ahora.
El uso de un enfoque de alto nivel primero le permitirá ser capaz de dividir su sistema en sus bloques de vista más básicos de 30.000 pies que luego puede empujar en cualquier sistema de control que se adapte a esos bloques mejor.
TL;DR: Asegúrate de que tu señal sea lo mejor posible y de que no la rompas en tu FFT, modela cómo quieres que se procese la señal, ajusta un filtro al modelo (probablemente no sea Kalman).