def demodulation_fsk(shiftKeyingSamples): time, informationSamplesTrueOnly = informationSignal( SECONDS_PER_BIT, tile(1, int(len(shiftKeyingSamples) / SAMPLES_PER_BIT)), SAMPLES_PER_BIT) _, informationSamplesFalseOnly = informationSignal( SECONDS_PER_BIT, tile(0, int(len(shiftKeyingSamples) / SAMPLES_PER_BIT)), SAMPLES_PER_BIT) samplesTrueOnly = frequencyShiftKeying(informationSamplesTrueOnly, time) samplesFalseOnly = frequencyShiftKeying(informationSamplesFalseOnly, time) productSamplesTrueOnly = [ s * ts for s, ts in zip(shiftKeyingSamples, samplesTrueOnly) ] productSamplesFalseOnly = [ s * ts for s, ts in zip(shiftKeyingSamples, samplesFalseOnly) ] integralPerBitSum, demodulatedInformationSamples = demodulationFSK( shiftKeyingSamples, productSamplesTrueOnly, productSamplesFalseOnly) return convert_samples_to_bits(demodulatedInformationSamples)
def informationSignal(secondsPerBit, bits, samplesPerBit): time = linspace(0, secondsPerBit * len(bits), samplesPerBit * len(bits)) signalSamples = samplesPerBit * len(bits) * [None] for i, bit in enumerate(bits): signalSamples[i * samplesPerBit:(i + 1) * samplesPerBit] = tile(bit, samplesPerBit) return time, signalSamples
def demodulation_psk(shiftKeyingSamples): time, informationSamplesTrueOnly = informationSignal(SECONDS_PER_BIT, tile(1, int(len(shiftKeyingSamples) / SAMPLES_PER_BIT)), SAMPLES_PER_BIT) samplesTrueOnly = phaseShiftKeying(informationSamplesTrueOnly, time) productSamples = [s * ts for s, ts in zip(shiftKeyingSamples, samplesTrueOnly)] integralPerBitSum, demodulatedInformationSamples = demodulationASKandPSK(shiftKeyingSamples, productSamples) return convert_samples_to_bits(demodulatedInformationSamples)