Estoy trabajando en un proyecto de Android en el que estoy usando FFT para procesar datos de acelerómetro y tengo problemas para entender cómo funcionan realmente estas cosas. estoy usando la biblioteca jTransform de Piotr Wendykier de la siguiente manera:Interpretación FFT
int length = vectors.length;
float[] input = new float[length*2];
for(int i=0;i<length;i++){
input[i]=vectors[i];
}
FloatFFT_1D fftlib = new FloatFFT_1D(length);
fftlib.complexForward(input);
float outputData[] = new float[(input.length+1)/2];
if(input.length%2==0){
for(int i = 0; i < length/2; i++){
outputData[i]= (float) Math.sqrt((Math.pow(input[2*i],2))+(Math.pow(input[2*(i)+1], 2)));
}
}else{
for(int i = 0; i < length/2+1; i++){
outputData[i]= (float) Math.sqrt((Math.pow(input[2*i],2))+(Math.pow(input[2*i+1], 2)));
}
}
List<Float> output = new ArrayList<Float>();
for (float f : outputData) {
output.add(f);
}
el resultado es una matriz con los datos siguientes .
Tengo un problema con la interpretación de los datos de salida ... Los datos son de 10 segundos de intervalo largo, y la frecuencia de muestreo es 50Hz..Mientras capturaba movía el teléfono hacia arriba y hacia abajo cada 3/4 segundos en mi mano , entonces, ¿es posible que el extremo que tiene aproximadamente x valor 16 sea el período del componente más fuerte de la señal? Necesito obtener la frecuencia del componente más fuerte en la señal ..
Gravity no tiene efecto sobre un acelerómetro ... El pico en CC es simplemente un sesgo de salida en el sensor, o simplemente que la integral de la aceleración del dispositivo sobre la ventana de medición no era cero (en otras palabras , hubo un cambio neto en la velocidad). –
@Oli: Interesante. El acelerómetro de mi iPhone que está sobre el escritorio informa una constante -1 en el eje Z. La dirección del -1 es cómo se determina la orientación del dispositivo. ¿Android es diferente? – hotpaw2
Hmm, no sé nada sobre los sensores utilizados en los teléfonos, ¡así que me retracto de mi declaración anterior! Sin embargo, el nombre "acelerómetro" me resultaría un poco engañoso si se diseñó para informar un valor distinto de cero cuando el dispositivo estaba parado. –