Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FFT解释_Java_Android_Accelerometer_Fft - Fatal编程技术网

Java FFT解释

Java FFT解释,java,android,accelerometer,fft,Java,Android,Accelerometer,Fft,我在一个Android项目中工作,在这个项目中,我使用FFT处理加速度计数据,我很难理解这些东西实际上是如何工作的。 我以以下方式使用Piotr Wendykier的jTransform库: int length = vectors.length; float[] input = new float[length*2]; for(int i=0;i<length;i++){ input[i]=vectors[i];

我在一个Android项目中工作,在这个项目中,我使用FFT处理加速度计数据,我很难理解这些东西实际上是如何工作的。 我以以下方式使用Piotr Wendykier的jTransform库:

        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);
        }
int length=vectors.length;
float[]输入=新的float[length*2];

对于(int i=0;i每个fft结果bin表示的频率是bin数乘以采样率除以fft的长度(与Sinc函数进行卷积,使其具有非零宽度,以获得比特技术)。如果采样率为50 Hz,且fft的长度为512,则fft结果的第16栏将表示约1.6 Hz,这接近于0.7秒的周期


箱位0(DC)处的峰值可能表示加速计上的非零重力。

由于您有真实数据,您应该将这些值传递给realForward函数(而不是
complexForward
)如前所述。

重力对加速计没有影响……直流峰值很可能只是传感器的输出偏置,甚至只是测量窗口上的设备加速度积分不为零(换句话说,速度有净变化)@Oli:有意思。我放在桌上的iPhone上的加速计在Z轴上报告一个常数-1。这个-1的方向是如何确定设备方向的。Android不同吗?嗯,我对手机中使用的传感器一无所知,所以我收回了我之前的说法!不过,我会找到“加速计”这个名字如果设计为在设备静止时报告非零,则有点误导。@奥利:查找爱因斯坦广义相对论中等价的含义。那么,作为魔鬼代言人,有没有一种普遍接受的方法来消除初始噪声?或者这是硬件特有的“功能”