def tf_inputfilter(self, inputfilter=None, frequencies=None): # input
# anti aliasing filter and additional delay model
# delay comes from latency in fpga + on average half sampling time
moduledelay = self.moduledelay + self.loops / 2.0
if inputfilter is None:
inputfilter = self.inputfilter
if frequencies is None:
frequencies = self.frequencies
frequencies = np.asarray(frequencies, dtype=np.complex)
try:
len(inputfilter)
except:
inputfilter = [inputfilter] # make it iterable
tf = frequencies*0 + 1.0
for f in inputfilter:
if f > 0: # lowpass
tf /= (1.0 + 1j * frequencies / f)
moduledelay += 1
elif f < 0: # highpass
tf /= (1.0 + 1j * f / frequencies)
moduledelay += 2
# add delay
delay = moduledelay * self.dt # + extradelay
tf *= np.exp(-1j*delay*frequencies*2*np.pi)
return tf
评论列表
文章目录