fork download
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4.  
  5. # -----------------------------
  6. # Received power calculation (Free-space)
  7. # -----------------------------
  8. def received_power(distance_m, frequency_hz, tx_power_dbm=20):
  9. c = 3.0e8 # speed of light [m/s]
  10. wavelength = c / frequency_hz
  11. fspl_db = 20 * np.log10(4 * np.pi * distance_m / wavelength)
  12. rx_power_dbm = tx_power_dbm - fspl_db
  13. return rx_power_dbm
  14.  
  15. # -----------------------------
  16. # Settings
  17. # -----------------------------
  18. distances = np.linspace(1, 200, 200) # distance [m]
  19. tx_power_dbm = 20 # transmit power [dBm]
  20.  
  21. rx_24 = received_power(distances, 2.4e9, tx_power_dbm)
  22. rx_5 = received_power(distances, 5.0e9, tx_power_dbm)
  23.  
  24. # -----------------------------
  25. # Plot
  26. # -----------------------------
  27. plt.figure(figsize=(8,5))
  28. plt.plot(distances, rx_24, label="2.4 GHz", color="green", linewidth=2)
  29. plt.plot(distances, rx_5, label="5 GHz", color="blue", linestyle="--", linewidth=2)
  30.  
  31. plt.title("Received Power vs Distance (Free Space)")
  32. plt.xlabel("Distance [m]")
  33. plt.ylabel("Received Power [dBm]")
  34. plt.grid(True, linestyle="--", alpha=0.7)
  35. plt.legend()
  36. plt.tight_layout()
  37. plt.show()
  38. # your code goes here
Success #stdin #stdout #stderr 3.47s 71100KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Fontconfig error: No writable cache directories