コード例 #1
0
ファイル: waveform.py プロジェクト: vthanki/MiscCode
class Waveform:

    def __init__(self, startFreq=0, endFreq=0, numSamples=0):
        if numSamples == 0:
            self.numSamples = numSamples
            self.frequencies = []
            self.voltRms = []
        else:
            self.frequencies = []
            self.voltRms = []
            self.device = Device()
            self.device.enableInput(5)
            self.device.enableOutput(1.41)
            self.numSamples = numSamples

            startl = math.log10(startFreq)
            endl = math.log10(endFreq)

            delta = (endl - startl) / (numSamples - 1)

            for i in range(0, numSamples):
                freq = 10 ** startl
                rms = self.device.readRMS(freq, int(freq * 32))
                if not math.isnan(rms):
                    self.frequencies.append(freq)
                    self.voltRms.append(rms)

                startl += delta

    def writeToFile(self, fileName):
        fHandle = open(fileName, 'w+')
        for freq, vrms in zip(self.frequencies, self.voltRms):
            fHandle.write(str(freq) + ', ' + str(vrms) + '\n')
        fHandle.close()

    def loadFromFile(self, fileName):
        with open(fileName) as f:
            for line in f:  # read rest of lines
                freq, vrms = [float(x) for x in line.split(',')]
                self.frequencies.append(freq)
                self.voltRms.append(vrms)
                self.numSamples += 1

    def dumpData(self):
        for freq, vrms in zip(self.frequencies, self.voltRms):
            print 'Freq:', freq, '\tVrms:', vrms

    def getDeviation(self, w):
        result = Waveform()
        for freq, vrms1, vrms2 in zip(self.frequencies, self.voltRms, w.voltRms):
            result.frequencies.append(freq)
            result.voltRms.append(vrms1-vrms2)
        return result