initial commit
This commit is contained in:
46
test_scaling.py
Normal file
46
test_scaling.py
Normal file
@@ -0,0 +1,46 @@
|
||||
"""test what the scaling factore of numpy's fft is"""
|
||||
import numpy as np
|
||||
from customfunc.app import PlotApp
|
||||
|
||||
|
||||
def setup_axes(n: int, lims=(-10, 10)) -> tuple[np.ndarray, float, np.ndarray, float]:
|
||||
x, dx = np.linspace(*lims, n, retstep=True)
|
||||
f = np.fft.fftfreq(n, dx)
|
||||
return x, dx, f, f[1] - f[0]
|
||||
|
||||
|
||||
def abs2(z):
|
||||
return z.real ** 2 + z.imag ** 2
|
||||
|
||||
|
||||
def g(x, w):
|
||||
return np.exp(-w * x ** 2)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
with PlotApp(exp_param=np.linspace(1, 50), n=np.arange(32, 1024)) as app:
|
||||
|
||||
app.set_antialiasing(True)
|
||||
fax = app["Frequency"]
|
||||
|
||||
@app.update
|
||||
def draw(exp_param, n):
|
||||
x, dx, f, df = setup_axes(n)
|
||||
ind = np.argsort(f)
|
||||
time_amp = 1
|
||||
|
||||
freq_amp = np.sqrt(np.pi / exp_param) * time_amp / dx
|
||||
freq_w = np.pi ** 2 / exp_param
|
||||
|
||||
signal = g(x, exp_param) * time_amp
|
||||
|
||||
transformed = np.fft.fft(np.fft.fftshift(signal))
|
||||
fax.set_line_data("transformed", f[ind], transformed[ind].real)
|
||||
|
||||
modeled = g(f, freq_w) * freq_amp
|
||||
fax.set_line_data("expected", f[ind], modeled[ind])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user