Cómo elegir una frecuencia de corte interpretando FFT

0

Tengo una pregunta relacionada con el filtrado de paso bajo de la aceleración IMU y los datos del giro. Para elegir una frecuencia de corte razonable, pensé en hacer algunas observaciones en el espectro.

Ahora tengo algunos problemas de interpretación. En mis pensamientos originales, asumí que habría algunos picos importantes. P.ej. un pico donde se encuentra la frecuencia de un movimiento de rotación. No habría muchas frecuencias altas y podía ver claramente un lugar donde pudiera cortarlo.

Eso estuvo mal ... Ya que la FFT se tomó en una medición completa de unos 30 segundos, la trama no tuvo nada que ver con lo que tenía en mente.

¿Cómo debo interpretar la FFT en una medición completa? Ahora veo que no es como ver una música en vivo a través de un analizador de espectro.

¿Es incluso una buena solución tomar la FFT para elegir una frecuencia de corte? Si no, ¿cuáles son mejores formas de hacerlo?

Edición 1:

Después de algunas buenas entradas, agrego más información.

La idea era matar el ruido generado por la IMU. Dado que la IMU está montada en un vehículo o en partes móviles en el vehículo (por ejemplo, el volante), asumí que el movimiento razonable más rápido debería ser conocido.

La función de filtro utilizada fue esta:

function Hd = lp_equiripple2
%LP_EQUIRIPPLE2 Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.2 and the Signal Processing Toolbox 7.4.
% Generated on: 29-Mar-2018 11:37:08

% Equiripple Lowpass filter designed using the FIRPM function.

% All frequency values are in Hz.
Fs = 100;  % Sampling Frequency

Fpass = 10;               % Passband Frequency
Fstop = 20;               % Stopband Frequency
Dpass = 0.0057563991496;  % Passband Ripple
Dstop = 0.0001;           % Stopband Attenuation
dens  = 20;               % Density Factor

% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);

% Calculate the coefficients using the FIRPM function.
b  = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);

% [EOF]

La FFT se recibió y se mostró de esta manera:

plot( ( 0:length(acc) - 1) / length(acc) * 100, abs( fft( gyr(:,:) ) ) )

Lo que sé, es de hecho un poco de código de espagueti.

Como ejemplo adjuntaré esta imagen recibida por este gráfico. Azul rojo amarillo es igual a la rotación alrededor de los ejes x, y y z.

La imagen completa está ampliada ya que DC es aproximadamente 2.5e5

Edit2:

AcabodeverquenohayunDCenorme.Simeacerco,esunpicorealmenteenormea3Hz,loquetienemuchosentido.Eneldiagramadegiro,estafrecuenciaesclaramentevisible:

Elespectrogramatambiénfueunabuenavisualización.Aunque,todavíanopuedoverunbuenlugarparacortar.Noestoysegurodesiaúndebería...

Edición3:

Segúnlosolicitado,temostraréungráficodeespectrograma.Porahora,hedecididodejarlosdatossinfiltrar,yaquenoestácompletamenteclaroquéesrealmenteelruido.ElsesgodelosdatosdelaIMUes,porsupuesto,elproblemamuchomayor.

A la izquierda puede ver los datos del giro del eje y, mientras que en el lado derecho se muestra la rotación en el eje z.

Si alguien tiene una buena idea de filtrarlo, dímelo, lo intentaré :)

De lo contrario, diría que éste está cerrado.

    
pregunta Mr.Sh4nnon

2 respuestas

1

Cuando realiza una FFT sobre una muestra de señal grande, obtiene los picos en las frecuencias que la FFT encontró sobre esa muestra. Sin embargo, la amplitud que se ve para cada pico es proporcional al "tiempo" en que existió el componente de frecuencia específico durante toda la muestra de la señal.

Imagina, por ejemplo, que tienes dos adquisiciones: una con una vibración de 1 segundo a 10 Hz y otra con la misma vibración de 10 Hz durante 30 segundos. Se espera que la amplitud del pico de 10 Hz para la primera adquisición sea 30 veces menor que para la segunda adquisición.

Espero que el componente más grande que tenga sea DC, que tiene una amplitud mucho mayor que los otros componentes de frecuencia que pueda tener. Un truco rápido es eliminar el componente de CC de su señal, antes de realizar la FFT. Calcule la media de x y luego x = x-mean .

También puede usar un espectrograma, que calcula la FFT para ventanas más pequeñas. Esto le dará una gráfica 2D con el tiempo en un eje y la frecuencia en el otro, y el color corresponde a la amplitud.

    
respondido por el daguiam
1

Sin SU elección del ancho de banda del sistema, cualquier ADC siempre sub-muestreará el contenido espectral entrante y plegará (alias) la energía de banda ancha. USTED necesita controlar el ancho de banda y entender que la reducción del filtro no es perfecta. Por lo tanto, la energía 10X o 100X o 1,000X más alta aún entrará en el muestreador ADC, para ser plegada.

A medida que explora y aprende, ahora se encuentra con la responsabilidad del diseñador del sistema: ¿qué grado de precisión debe alcanzar? ¿Y qué tan rápido debe responder el sistema?

    
respondido por el analogsystemsrf

Lea otras preguntas en las etiquetas