Skip to content

Instantly share code, notes, and snippets.

@sewera
Created May 10, 2020 13:33
Show Gist options
  • Save sewera/7d3bf6ab1cd003384c28d0bbd3a4c652 to your computer and use it in GitHub Desktop.
Save sewera/7d3bf6ab1cd003384c28d0bbd3a4c652 to your computer and use it in GitHub Desktop.
FOT – Lab4 zdalne – Zadanie 1 wykresy k(omega), a, M(Omega)
import numpy as np
from matplotlib import pyplot as plt
K0 = 1 # [1]
DELTA_OMEGA_D = 1500 # [MHz]
L = 0.9 # [m]
DELTA_OMEGA = (3e8 * 1e-6)/(2 * L) # [MHz]
A = 0.45 # [1]
OMEGA_PR = np.sqrt(-np.log(A)) * 0.6 * DELTA_OMEGA_D # [MHz]
DELTA_L = 0.3 # [µm]
LAMBDA = 0.6328 # [µm]
DELTA_F = (DELTA_OMEGA * DELTA_L)/(LAMBDA/2)
def dopplerowska_krzywa_wzm(omega: float) -> float:
return K0 * np.exp((-np.power(omega, 2))/np.power(0.6*DELTA_OMEGA_D, 2))
def skladnik_struktury_modow(omega: float, n: int) -> float:
return 1/(1 + np.power((omega - n * DELTA_OMEGA_D - DELTA_F)/2, 2))
def struktura_modow(omega: float) -> float:
n = np.arange(-15, 15, 1)
return np.sum([skladnik_struktury_modow(omega, _n) for _n in n])
def amplituda_modow(omega: float) -> float:
return A + (dopplerowska_krzywa_wzm(omega) - A) * struktura_modow(omega)
if __name__ == "__main__":
zakres_omega = np.arange(-1200, 1200, 1)
zakres_OMEGA = np.arange(-OMEGA_PR, OMEGA_PR, OMEGA_PR/5000)
wzmocnienie = [dopplerowska_krzywa_wzm(omega)
for omega in zakres_omega]
poziom_strat = np.full(zakres_omega.shape, A)
amplituda_modow_arr = [amplituda_modow(_omega)
for _omega in zakres_OMEGA]
plt.plot(zakres_omega, wzmocnienie)
plt.plot(zakres_omega, poziom_strat)
plt.plot(zakres_OMEGA, amplituda_modow_arr)
plt.xlabel(r"$\omega$ [MHz]")
plt.legend(["Wzmocnienie", "Poziom strat", "Amplituda modów"])
plt.savefig("zad_1.png")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment