test.py (2800B)
1 import numpy as np 2 3 import sys, os 4 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 5 import hermespy_rt as rt 6 7 # Define inputs 8 mesh_filepath = __file__[:__file__.rfind('/') + 1] + '../scenes/simple_reflector.hrt' 9 rx_positions = np.array([[0., 0., .15]], dtype=np.float64) 10 tx_positions = np.array([[0., 0., .151]], dtype=np.float64) 11 rx_velocities = np.array([[0., 0., 0.]], dtype=np.float64) 12 tx_velocities = np.array([[0., 0., 0.]], dtype=np.float64) 13 carrier_frequency = 3.0 14 num_rx = 1 15 num_tx = 1 16 num_paths = 10000 17 num_bounces = 3 18 19 # Call compute_paths 20 los, scatter = rt.compute_paths( 21 mesh_filepath, 22 rx_positions, 23 tx_positions, 24 rx_velocities, 25 tx_velocities, 26 carrier_frequency, 27 num_rx, 28 num_tx, 29 num_paths, 30 num_bounces 31 ) 32 33 print("#####################") 34 print("LoS:") 35 print("#####################") 36 print(f"shape(los.directions_rx): {los.directions_rx.shape}") 37 print(f"shape(los.directions_tx): {los.directions_tx.shape}") 38 print(f"shape(los.a_te): {los.a_te.shape}") 39 print(f"shape(los.a_tm): {los.a_tm.shape}") 40 print(f"Delays: {los.tau}") 41 print(f"los.a_te.real min, max: {np.min(los.a_te.real)}, {np.max(los.a_te.real)}") 42 print(f"los.a_te.imag min, max: {np.min(los.a_te.imag)}, {np.max(los.a_te.imag)}") 43 print(f"los.a_tm.real min, max: {np.min(los.a_tm.real)}, {np.max(los.a_tm.real)}") 44 print(f"los.a_tm.imag min, max: {np.min(los.a_tm.imag)}, {np.max(los.a_tm.imag)}") 45 46 print("\n#####################") 47 print("Scatter:") 48 print("#####################") 49 print(f"shape(scatter.directions_rx): {scatter.directions_rx.shape}") 50 print(f"shape(scatter.directions_tx): {scatter.directions_tx.shape}") 51 print(f"shape(scatter.a_te): {scatter.a_te.shape}") 52 print(f"shape(scatter.a_tm): {scatter.a_tm.shape}") 53 print(f"Delays: {scatter.tau}") 54 print(f"scatter.a_te.real min, max: {np.min(scatter.a_te.real)}, {np.max(scatter.a_te.real)}") 55 print(f"scatter.a_te.imag min, max: {np.min(scatter.a_te.imag)}, {np.max(scatter.a_te.imag)}") 56 print(f"scatter.a_tm.real min, max: {np.min(scatter.a_tm.real)}, {np.max(scatter.a_tm.real)}") 57 print(f"scatter.a_tm.imag min, max: {np.min(scatter.a_tm.imag)}, {np.max(scatter.a_tm.imag)}") 58 59 # Asssert shapes 60 # LoS 61 assert los.num_paths == 1 62 assert ( 63 (num_rx, num_tx, 1, 3) 64 == los.directions_rx.shape 65 == los.directions_tx.shape 66 ) 67 assert ( 68 (num_rx, num_tx, 1) 69 == los.a_te.shape 70 == los.a_tm.shape 71 == los.tau.shape 72 == los.freq_shift.shape 73 ) 74 # Scatter 75 assert scatter.num_paths == num_bounces * num_paths 76 assert ( 77 (num_rx, num_tx, scatter.num_paths, 3) 78 == scatter.directions_rx.shape 79 == scatter.directions_tx.shape 80 ) 81 assert ( 82 (num_rx, num_tx, scatter.num_paths) 83 == scatter.a_te.shape 84 == scatter.a_tm.shape 85 == scatter.tau.shape 86 == scatter.freq_shift.shape 87 )