Android上的信号处理,内存问题?

时间:2014-04-11 09:40:05

标签: android memory

我有30分钟的EEG数据,我使用200个样本长度的滑动窗口循环,每个窗口进行小波变换,提取特征并对其进行分类。这导致大约3500个窗口,其中每个窗口循环200个值。

因此循环看起来像这样:

while(shift< 3500 * 100){

    // GET 200 SAMPLES
    for (int i=starter; i<wl+shift; i++) {

    v = dis.readFloat();
        data[i] = v;
        }
    // SHIFT FOR NEXT LOOP
      shift = shift + 100;
      starter = shift;

  // EXTRACT FEATURES

    Transform t = new Transform( new FastWaveletTransform( new Daub04( ) ) );


   double[ ] arrTime = data;

    final double[ ] arrHilb = t.forward( arrTime ); // 1-D FWT Haar forward


    // coeff1
        for (int j = 0; j < length/2; j++) {

           coeff1[j] = arrHilb[length-1-j];
            sum1 += coeff1[j];
                }

它处理约20分钟然后失败(跳过帧)。在Matlab中,使用数组操作需要几秒钟,但我无法在Android上看到任何其他方法来执行此操作。

这个想法只是将EEG数据分成200个样本块,重叠率为50%,并为每个样本提取特征。

更新已解决:
    问题在于数据数组是从read.Float和循环构建的。我最终将整个数据集读入数组数据,然后通过使用System.arraycopy(data,starter,data1,0,data1.length)移动数据200个样本的另一个循环;每次迭代都有starter = starter + 200。这是在几秒钟内完成的,所以不用担心:)

谢谢!

0 个答案:

没有答案