Exemplo n.º 1
0
        // 64 channel sample with padCount zeros padded right
        public List <double> GetPaddedChannelSample(int sampleCount, int padCount)
        {
            int numSamplesToGet = (sampleCount - padCount);
            int curIDX          = _sampleIDX;

            if (curIDX + numSamplesToGet >= _samples.Count)
            {
                numSamplesToGet = _samples.Count - curIDX;
                if (numSamplesToGet <= 0)
                {
                    // Roll over to the beginning
                    _sampleIDX = 0;
                    return(GetPaddedChannelSample(sampleCount, padCount));
                }
            }

            _sampleIDX  += numSamplesToGet;
            _sliceSignal = _samples.GetRange(curIDX, numSamplesToGet);

            List <double> paddedSignal = new List <double>(sampleCount);

            paddedSignal.AddRange(_sliceSignal);
            // Pad
            int padLen = (sampleCount - numSamplesToGet);

            for (int cnt = 0; cnt < padLen; cnt++)
            {
                paddedSignal.Add(0.0);
            }

            IDFT ff_transform = new ComplexFastFourierTransform();
            IDFT cdf_tranform = new CorrelationFourierTransform();

            //_frequencyDomain = DFT.CorrelationTransform(paddedSignal);
            _frequencyDomain = ff_transform.Transform(paddedSignal);
            return(_sliceSignal);
        }
Exemplo n.º 2
0
        public List <double> GetNextSamplesForTimeSlice(double milliseconds)
        {
            int numSamplesToGet = (int)Math.Floor((milliseconds / 1000) * _sampleRate);
            int curIDX          = _sampleIDX;

            if (curIDX + numSamplesToGet >= _samples.Count)
            {
                numSamplesToGet = _samples.Count - curIDX - 1;
                if (numSamplesToGet <= 0)
                {
                    // Roll over to the beginning
                    _sampleIDX = 0;
                    return(GetNextSamplesForTimeSlice(milliseconds));
                }
            }
            _sampleIDX  += numSamplesToGet;
            _sliceSignal = _samples.GetRange(curIDX, numSamplesToGet);
            //_frequencyDomain = DFT.CorrelationTransform(_sliceSignal);
            //IDFT transform = new FastFourierTransform();
            IDFT transform = new CorrelationFourierTransform();

            _frequencyDomain = transform.Transform(_sliceSignal);
            return(_sliceSignal);
        }