kopia lustrzana https://github.com/corrscope/corrscope
Precompute Gaussian windows for CorrelationTrigger objects
rodzic
042c8a3be5
commit
fc7014750b
|
@ -88,29 +88,37 @@ class CorrelationTrigger(Trigger):
|
||||||
subsampling=1,
|
subsampling=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_trigger(self, index: int) -> int:
|
# Precompute tables
|
||||||
"""
|
|
||||||
:param index: sample index
|
|
||||||
:return: new sample index, corresponding to rising edge
|
|
||||||
"""
|
|
||||||
trigger_strength = self.cfg.trigger_strength
|
trigger_strength = self.cfg.trigger_strength
|
||||||
use_edge_trigger = self.cfg.use_edge_trigger
|
|
||||||
|
|
||||||
N = self._buffer_nsamp
|
N = self._buffer_nsamp
|
||||||
halfN = N // 2
|
halfN = N // 2
|
||||||
|
|
||||||
# data = windowed
|
# Step function (get_trigger)
|
||||||
data = self._wave.get_around(index, N, self._subsampling)
|
|
||||||
data *= signal.gaussian(N, std = halfN / np.sqrt(self._subsampling))
|
|
||||||
|
|
||||||
# prev_buffer = windowed step function + self._buffer
|
|
||||||
step = np.empty(N, dtype=FLOAT) # type: np.ndarray[FLOAT]
|
step = np.empty(N, dtype=FLOAT) # type: np.ndarray[FLOAT]
|
||||||
step[:halfN] = -trigger_strength / 2
|
step[:halfN] = -trigger_strength / 2
|
||||||
step[halfN:] = trigger_strength / 2
|
step[halfN:] = trigger_strength / 2
|
||||||
|
|
||||||
step *= signal.gaussian(N, std = halfN / 3)
|
step *= signal.gaussian(N, std = halfN / 3)
|
||||||
|
self._windowed_step = step
|
||||||
|
|
||||||
prev_buffer = self._buffer + step
|
# Input data window (narrower for long subsampled data)
|
||||||
|
self._data_window = signal.gaussian(N, std=halfN / np.sqrt(self._subsampling))
|
||||||
|
|
||||||
|
def get_trigger(self, index: int) -> int:
|
||||||
|
"""
|
||||||
|
:param index: sample index
|
||||||
|
:return: new sample index, corresponding to rising edge
|
||||||
|
"""
|
||||||
|
use_edge_trigger = self.cfg.use_edge_trigger
|
||||||
|
|
||||||
|
N = self._buffer_nsamp
|
||||||
|
|
||||||
|
# data = windowed
|
||||||
|
data = self._wave.get_around(index, N, self._subsampling)
|
||||||
|
data *= self._data_window
|
||||||
|
|
||||||
|
# prev_buffer
|
||||||
|
prev_buffer = self._windowed_step + self._buffer
|
||||||
|
|
||||||
# Calculate correlation
|
# Calculate correlation
|
||||||
"""
|
"""
|
||||||
|
|
Ładowanie…
Reference in New Issue