def test_fft_ifft(self): r = pyspt.generate_sine() | pyspt.generate_sine(freq=10e3) t = r.copy t.fft() t.ifft() difference = t - r self.assertTrue(np.max(np.absolute(difference.timeData)) < 1e-14, msg='fft => ifft does not result in same values!')
def test_minus(self): r = pyspt.generate_sine(nSamples=10) s = pyspt.generate_sine(nSamples=10, freq=500) t = s - r t = s - 2 t = s - 2.5 t = 2 - s t = 2.5 - s t -= s t -= 2 t -= 2.5
def test_add(self): r = pyspt.generate_sine(nSamples=10) s = pyspt.generate_sine(nSamples=10, freq=500) t = s + r t = s + 2 t = s + 2.5 t = 2 + s t = 2.5 + s t += s t += 2 t += 2.5
def test_mere_list(self): allSig = [] for iSig in range(10): allSig.append(pyspt.generate_sine(freq=10*iSig+10, samplingRate=500, nSamples=1e3)) multCh = pyspt.merge(allSig) self.assertEqual(multCh.nChannels, 10)
def test_copy_vs_reference(self): r = pyspt.generate_sine() t = r.copy # return a copy self.assertTrue((r.timeData == t.timeData).all(), msg='Copy results in different timeData values') self.assertIsNot(r.timeData_reference, t.timeData_reference, msg='obj.copy returns only reference!') t = r # now t is only a new reference self.assertIs(r.timeData_reference, t.timeData_reference, msg= 'error a = b returns no reference!')
def test_resample(self): sig = pyspt.generate_sine() + pyspt.generate_noise()*(1/80) sig3 = pyspt.dsp.resample(sig, 500e3) self.assertEqual(sig3.samplingRate, 500e3) self.assertEqual(sig.length, sig3.length) sig3 = pyspt.dsp.resample(sig, 2e6) self.assertEqual(sig3.samplingRate, 2e6) self.assertEqual(sig.length, sig3.length)
def test_rms_results(self): tmp = pyspt.generate_sine(nSamples=44100, amplitude=1, samplingRate=44100) self.assertTrue( tmp.rms() - np.sqrt(0.5) < 1e-15, msg='rms in time domain wrong') tmp.fft() self.assertTrue( tmp.rms() - np.sqrt(0.5) < 1e-15, msg= 'rms in freq domain wrong')
def test_generate_sine(self): r = pyspt.generate_sine() r = pyspt.generate_sine(freq=100, samplingRate=10e3, amplitude=2, nSamples= 1000, phaseOffset=3.14) self.assertIsInstance(r, pyspt.Signal)
def test_spectrogram_time(self): r = pyspt.generate_sine() r.plot_spectrogram(show=False)
def test_plot_time(self): r = pyspt.generate_sine(freq=1, samplingRate=40, nSamples=41) r.plot_time(show=False)
def test_nSamples_setter(self): r = pyspt.generate_sine() r.nSamples = 10 self.assertEqual(r.nSamples, 10) r.nSamples = 100 self.assertEqual(r.nSamples, 100)
def test_nSamples(self): r = pyspt.generate_sine() self.assertEqual(r._data.shape[1], r.nSamples)
def test_freq2index(self): r = pyspt.generate_sine() testIdx = 1234 self.assertEqual(r.freq2index(r.freqVector[testIdx]), testIdx, msg='freq2index did not result in correct value')
def test_call_properties(self): r = pyspt.generate_sine() tmp = r.freqVector tmp = r.freqData tmp = r.timeData
def test_time_vector(self): r = pyspt.generate_sine() self.assertTrue((r.timeVector == np.array(range(r.nSamples))/r.samplingRate).all())
def test_multiply_with_scalar(self): r = pyspt.generate_sine(nSamples=10) t = r * 2 t = r * 2.1
def test_negative(self): r = pyspt.generate_sine(nSamples=10) t = - r
def test_length(self): r = pyspt.generate_sine() self.assertEqual(r.length, r.nSamples/r.samplingRate)
def test_freq_time(self): r = pyspt.generate_sine() r.plot_freq(show=False)
def test_length_setter(self): r = pyspt.generate_sine() r.length = 0.1 self.assertEqual(r.length, 0.1) r.length = 0.2 self.assertEqual(r.length, 0.2)
def test_hilbert(self): sine = pyspt.generate_sine(freq=3, samplingRate=10e3, nSamples=10e3) sineH = pyspt.dsp.hilbert_transform(sine)
def test_nChannels(self): r = pyspt.generate_sine() self.assertEqual(r._data.shape[0], r.nChannels)
ax.set_prop_cycle(imagCycler) lineHandles = plt.plot(testSig.T) # %% #del sys.modules[] #import pyspt #importlib.reload(pyspt) import pyspt import numpy as np testSig = np.array(range(40)).reshape((4,10)) t = pyspt.Signal(testSig*(1+1j*0.9), 1) s = pyspt.generate_sine(freq=50) s.plot_time() #t = pyspt.Signal(testSig, 1) #t.plot_freq() # %% import pyspt s = pyspt.generate_sine(freq=50) s.fft() t = s.copy s.ifft() t = s.copy s |= s t = s.copy
def test_frequency_mixer(self): mixingFreq = 200e3 inputSignal = pyspt.generate_sine() outputSignal2 = pyspt.dsp.frequency_mixer(inputSignal, mixingFreq)