62 lines
1.1 KiB
Python
62 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
import numpy as np
|
|
|
|
class FreqClass:
|
|
def __init__(self, steps, f0, bw):
|
|
self.f0 = f0
|
|
self._bw = bw
|
|
self._steps = steps;
|
|
self._update_delta()
|
|
|
|
def _update_delta(self):
|
|
self._delta = self._bw/self.f0*np.linspace(-1/2,1/2,self._steps)
|
|
|
|
def __repr__(self):
|
|
return self.__str__()
|
|
def __str__(self):
|
|
return "%gGHz, %gGHz BW sweep [%d points]" % \
|
|
(self.f0, self._bw, self._steps)
|
|
|
|
@property
|
|
def hz_range(self):
|
|
return (np.min(self.hz), np.max(self.hz))
|
|
|
|
@property
|
|
def delta(self):
|
|
return self._delta
|
|
@property
|
|
def bw(self):
|
|
return self._bw
|
|
@bw.setter
|
|
def bw(self, bw):
|
|
self._bw = bw
|
|
self._update_delta()
|
|
|
|
@property
|
|
def steps(self):
|
|
return self._steps
|
|
@steps.setter
|
|
def steps(self, steps):
|
|
self._steps = steps
|
|
self._update_delta()
|
|
|
|
@property
|
|
def hz(self):
|
|
return self.f0*(1+self._delta)
|
|
@property
|
|
def f(self):
|
|
return self.hz
|
|
@property
|
|
def rad(self):
|
|
return 2*np.pi*self.f0*(1+self._delta)
|
|
@property
|
|
def w(self):
|
|
return self.rad
|
|
@property
|
|
def jw(self):
|
|
return 2j*np.pi*self.f0*(1+self._delta)
|
|
@property
|
|
def delta(self):
|
|
return self._delta
|
|
|
|
|