mirror of
https://gitlab.science.ru.nl/mthesis-edeboone/m-thesis-introduction.git
synced 2024-11-13 01:53:31 +01:00
ZH: use correct DTFT convention
Only affects phase determination. Introduces a minus sign for the s_k terms and changes arctan2 parameters
This commit is contained in:
parent
ecc79a8c91
commit
4c834ad8e7
3 changed files with 35 additions and 4 deletions
|
@ -12,7 +12,7 @@ def sine_beacon(f, t, t0=0, amplitude=1, baseline=0, phase=0):
|
||||||
"""
|
"""
|
||||||
Return a sine appropriate as a beacon
|
Return a sine appropriate as a beacon
|
||||||
"""
|
"""
|
||||||
return amplitude * np.sin(2*np.pi*f*(t+t0) + phase) + baseline
|
return amplitude * np.cos(2*np.pi*f*(t+t0) + phase) + baseline
|
||||||
|
|
||||||
def phase_mod(phase, low=np.pi):
|
def phase_mod(phase, low=np.pi):
|
||||||
"""
|
"""
|
||||||
|
@ -63,7 +63,7 @@ def ft_corr_vectors(freqs, time):
|
||||||
freqtime = np.outer(freqs, time)
|
freqtime = np.outer(freqs, time)
|
||||||
|
|
||||||
c_k = np.cos(2*np.pi*freqtime)
|
c_k = np.cos(2*np.pi*freqtime)
|
||||||
s_k = np.sin(2*np.pi*freqtime)
|
s_k = -1*np.sin(2*np.pi*freqtime)
|
||||||
|
|
||||||
return c_k, s_k
|
return c_k, s_k
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ def find_beacon_in_traces(
|
||||||
|
|
||||||
real, imag = direct_fourier_transform(freq, t_trace, traces[i])
|
real, imag = direct_fourier_transform(freq, t_trace, traces[i])
|
||||||
|
|
||||||
phases[i] = np.arctan2(real, imag)
|
phases[i] = np.arctan2(imag, real)
|
||||||
amplitudes[i] = 2/n_samples * (real**2 + imag**2)**0.5
|
amplitudes[i] = 2/n_samples * (real**2 + imag**2)**0.5
|
||||||
|
|
||||||
return frequencies, phases, amplitudes
|
return frequencies, phases, amplitudes
|
||||||
|
|
1
simulations/airshower_beacon_simulation/lib/tests/lib
Symbolic link
1
simulations/airshower_beacon_simulation/lib/tests/lib
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../
|
30
simulations/airshower_beacon_simulation/lib/tests/test_beacon_fourier.py
Executable file
30
simulations/airshower_beacon_simulation/lib/tests/test_beacon_fourier.py
Executable file
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
import lib
|
||||||
|
|
||||||
|
seed = 12345
|
||||||
|
dt = 1 # ns
|
||||||
|
t = np.arange(0, 10*int(1e3), dt)
|
||||||
|
frequency = 45e-3 # GHz
|
||||||
|
|
||||||
|
N = 5e2
|
||||||
|
rng = np.random.default_rng(seed)
|
||||||
|
|
||||||
|
phase_res = np.zeros(int(N))
|
||||||
|
|
||||||
|
for i in range(int(N)):
|
||||||
|
phase = lib.phase_mod(np.pi*(2*rng.uniform(size=1) -1)) # rad
|
||||||
|
beacon = lib.sine_beacon(frequency, t, t0=0, phase=phase)
|
||||||
|
|
||||||
|
measured = lib.find_beacon_in_traces([beacon], t, frequency, frequency_fit=False)
|
||||||
|
|
||||||
|
phase_res[i] = lib.phase_mod(measured[1][0] - phase)
|
||||||
|
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.set_xlabel("$\\varphi_{meas} - \\varphi_{true}$ [rad]")
|
||||||
|
ax.set_ylabel("#")
|
||||||
|
ax.hist(phase_res, bins='sqrt')
|
||||||
|
plt.show()
|
Loading…
Reference in a new issue