@@ -309,6 +309,15 @@ public void Process()
309309 _previousBatch = _previousBatch . GetRange ( _batch . Count , _bLen ) ;
310310 _previousBatch . AddRange ( _batch ) ;
311311 _modeler . Train ( _previousBatch . ToArray ( ) , ref _results ) ;
312+
313+ // move the values to front
314+ for ( int i = 0 ; i < _batch . Count ; ++ i )
315+ {
316+ for ( int j = 0 ; j < _outputLength ; ++ j )
317+ {
318+ _results [ i ] [ j ] = _results [ _bLen + i ] [ j ] ;
319+ }
320+ }
312321 }
313322 else
314323 {
@@ -334,7 +343,7 @@ public ValueGetter<VBuffer<double>> CreateGetter(DataViewRowCursor input, string
334343 double src = default ;
335344 srcGetter ( ref src ) ;
336345 var result = VBufferEditor . Create ( ref dst , _outputLength ) ;
337- _results [ input . Position % _batchSize + _bLen ] . CopyTo ( result . Values ) ;
346+ _results [ input . Position % _batchSize ] . CopyTo ( result . Values ) ;
338347 dst = result . Commit ( ) ;
339348 } ;
340349 return getter ;
@@ -587,10 +596,11 @@ private void SpectralResidual(double[] values, double[][] results, double thresh
587596 {
588597 _ifftMagList [ i ] = Math . Sqrt ( _ifftRe [ i ] * _ifftRe [ i ] + _ifftIm [ i ] * _ifftIm [ i ] ) ;
589598 }
590- AverageFilter ( _ifftMagList , Math . Min ( _ifftMagList . Length , _judgementWindowSize ) , true ) ;
591- for ( int i = 1 ; i <= Math . Min ( length , _minimumScoreWindowSize ) ; ++ i )
599+
600+ AverageFilter ( _ifftMagList , Math . Min ( _ifftMagList . Length , _judgementWindowSize ) ) ;
601+ for ( int i = 0 ; i <= Math . Min ( length , _minimumScoreWindowSize ) ; ++ i )
592602 {
593- _cumSumList [ i ] = _cumSumList [ Math . Min ( length - 1 , _minimumScoreWindowSize + 1 ) ] ;
603+ _cumSumList [ i ] = _cumSumList [ Math . Min ( length , _minimumScoreWindowSize ) - 1 ] ;
594604 }
595605
596606 // Step 7: Calculate raw score and set result
@@ -653,13 +663,13 @@ private void AverageFilter(double[] data, int n, bool ignoreFirst=false)
653663 _cumSumList [ i ] = cumsum ;
654664 _cumSumShift [ i ] = cumsum ;
655665 }
656- for ( int i = n + 1 ; i < length ; ++ i )
666+ for ( int i = n ; i < length ; ++ i )
657667 {
658668 _cumSumList [ i ] = ( _cumSumList [ i ] - _cumSumShift [ i - n ] ) / n ;
659669 }
660- for ( int i = 1 ; i <= n && i < length ; ++ i )
670+ for ( int i = 1 ; i < n ; ++ i )
661671 {
662- _cumSumList [ i ] = ignoreFirst ? ( _cumSumShift [ i ] - _cumSumShift [ 0 ] ) / i : _cumSumList [ i ] / ( i + 1 ) ;
672+ _cumSumList [ i ] /= ( i + 1 ) ;
663673 }
664674 }
665675
0 commit comments