kopia lustrzana https://github.com/corrscope/corrscope
Clarify CorrelationTrigger get_trigger(index)
rodzic
194ce67e0f
commit
fd4f8a8645
|
@ -90,19 +90,19 @@ class CorrelationTrigger(Trigger):
|
|||
N = self._buffer_nsamp
|
||||
data = self._wave.get_around(index, N)
|
||||
|
||||
# Add "step function" to correlation buffer
|
||||
# prev_buffer = windowed step function + self._buffer
|
||||
halfN = N // 2
|
||||
window = signal.gaussian(N, std = halfN // 3)
|
||||
|
||||
step = np.empty(N)
|
||||
step[:halfN] = -trigger_strength / 2
|
||||
step[halfN:] = trigger_strength / 2
|
||||
|
||||
window = signal.gaussian(N, std = halfN // 3)
|
||||
step *= window
|
||||
|
||||
prev_buffer = self._buffer + step
|
||||
|
||||
# Find optimal offset (within ±N//4)
|
||||
delta = N-1
|
||||
mid = N-1
|
||||
radius = N//4
|
||||
|
||||
# Calculate correlation
|
||||
|
@ -121,12 +121,15 @@ class CorrelationTrigger(Trigger):
|
|||
corr = signal.correlate(data, prev_buffer)
|
||||
assert len(corr) == 2*N - 1
|
||||
|
||||
corr = corr[delta-radius : delta+radius+1]
|
||||
delta = radius
|
||||
left = mid - radius
|
||||
right = mid + radius + 1
|
||||
|
||||
# argmax(corr) == delta + peak_offset == (data >> peak_offset)
|
||||
# peak_offset == argmax(corr) - delta
|
||||
peak_offset = np.argmax(corr) - delta # type: int
|
||||
corr = corr[left:right]
|
||||
mid = mid - left
|
||||
|
||||
# argmax(corr) == mid + peak_offset == (data >> peak_offset)
|
||||
# peak_offset == argmax(corr) - mid
|
||||
peak_offset = np.argmax(corr) - mid # type: int
|
||||
trigger = index + peak_offset
|
||||
|
||||
# Update correlation buffer (distinct from visible area)
|
||||
|
|
Ładowanie…
Reference in New Issue