【发布时间】:2015-02-27 20:10:04
【问题描述】:
我正在开发一个应用程序,该应用程序将返回手机使用加速度计所经历的振动频率。
这是我个人使用的.. 只是为了获得 DSP 方面的经验和在我的手机中使用传感器。
所以,我抓取了一些传感器数据并将绝对值写入一个数组。我的下一步是使用 FFT 来尝试获得主导频率。这就是我迷路的地方。
实际上,我的最终目标只是确定数据是否是实时的。所以,如果我做错了,请指出正确的方向。
如果我朝着正确的方向前进,我的代码哪里出错了?我是 android 和 java 的新手,我也可能犯了一些严重的逻辑错误。如果我可以获取一个数组,对其执行 FFT,实时获取主频率,并显示该结果......我全神贯注。
下面的代码sn-p:(数组fftData全是垃圾数据)
int N = 1024;
double[] magnitude = new double[N/2];
double[] fftData = new double[]{
0.0176,
-0.0620,
0.2467,
0.4599,
-0.0582,
0.4694,
0.0001,
-0.2873};
double[] fft = new double[N*2];
double max_index=-9999999;
double max_magnitude = -9999999;
float sample_rate = 59.98f;
for (int i = 0; i < N; i++) {
fftData[i] = AbsVal;
}
DoubleFFT_1D fftDo = new DoubleFFT_1D(N);
fftDo.realForwardFull(fftData);
// I'm lost here ...
double frequency = /* not sure what to do here either */;
Strength.setText(String.valueOf(Math.round(AbsVal)) + " \u00b5T");
field.setText(String.valueOf(frequency));
【问题讨论】:
标签: java android signal-processing fft android-sensors