fork download
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. import sys
  4. # matplotlibは不要のためインポートから削除
  5.  
  6. # -----------------------------
  7. # Received power calculation (Free-space)
  8. # -----------------------------
  9. def received_power(distance_m, frequency_hz, tx_power_dbm=20):
  10. """自由空間での受信電力を計算 (dBm)"""
  11. c = 3.0e8 # speed of light [m/s]
  12. wavelength = c / frequency_hz
  13. # 自由空間経路損失 (FSPL) [dB]
  14. # FSPL = 20 * log10(4 * pi * d / lambda)
  15. fspl_db = 20 * np.log10(4 * np.pi * distance_m / wavelength)
  16. # 受信電力 [dBm] = 送信電力 [dBm] - FSPL [dB]
  17. rx_power_dbm = tx_power_dbm - fspl_db
  18. return rx_power_dbm
  19.  
  20. # -----------------------------
  21. # Settings
  22. # -----------------------------
  23. distances = np.linspace(1, 200, 200) # distance [m]
  24. tx_power_dbm = 20 # transmit power [dBm]
  25.  
  26. # 受信電力の計算
  27. rx_24 = received_power(distances, 2.4e9, tx_power_dbm)
  28. rx_5 = received_power(distances, 5.0e9, tx_power_dbm)
  29.  
  30. # -----------------------------
  31. # CSV形式で出力
  32. # -----------------------------
  33.  
  34. # ヘッダー行の出力
  35. print("Distance[m],2.4GHz_Rx_Power[dBm],5GHz_Rx_Power[dBm]")
  36.  
  37. # データ行の出力
  38. # 距離、2.4GHz受信電力、5GHz受信電力を結合して反復処理
  39. for d, r24, r5 in zip(distances, rx_24, rx_5):
  40. # 小数点以下3桁まで表示してCSV形式で出力
  41. print(f"{d:.1f},{r24:.3f},{r5:.3f}")
Success #stdin #stdout 1.08s 41476KB
stdin
Standard input is empty
stdout
Distance[m],2.4GHz_Rx_Power[dBm],5GHz_Rx_Power[dBm]
1.0,-20.046,-26.421
2.0,-26.067,-32.442
3.0,-29.588,-35.964
4.0,-32.087,-38.462
5.0,-34.025,-40.401
6.0,-35.609,-41.984
7.0,-36.948,-43.323
8.0,-38.108,-44.483
9.0,-39.131,-45.506
10.0,-40.046,-46.421
11.0,-40.874,-47.249
12.0,-41.630,-48.005
13.0,-42.325,-48.700
14.0,-42.969,-49.344
15.0,-43.568,-49.943
16.0,-44.128,-50.504
17.0,-44.655,-51.030
18.0,-45.151,-51.527
19.0,-45.621,-51.996
20.0,-46.067,-52.442
21.0,-46.490,-52.866
22.0,-46.894,-53.270
23.0,-47.281,-53.656
24.0,-47.650,-54.025
25.0,-48.005,-54.380
26.0,-48.345,-54.721
27.0,-48.673,-55.048
28.0,-48.989,-55.364
29.0,-49.294,-55.669
30.0,-49.588,-55.964
31.0,-49.873,-56.248
32.0,-50.149,-56.524
33.0,-50.416,-56.791
34.0,-50.676,-57.051
35.0,-50.927,-57.303
36.0,-51.172,-57.547
37.0,-51.410,-57.785
38.0,-51.642,-58.017
39.0,-51.867,-58.242
40.0,-52.087,-58.462
41.0,-52.302,-58.677
42.0,-52.511,-58.886
43.0,-52.715,-59.091
44.0,-52.915,-59.290
45.0,-53.110,-59.485
46.0,-53.301,-59.676
47.0,-53.488,-59.863
48.0,-53.671,-60.046
49.0,-53.850,-60.225
50.0,-54.025,-60.401
51.0,-54.197,-60.573
52.0,-54.366,-60.741
53.0,-54.532,-60.907
54.0,-54.694,-61.069
55.0,-54.853,-61.228
56.0,-55.010,-61.385
57.0,-55.163,-61.539
58.0,-55.315,-61.690
59.0,-55.463,-61.838
60.0,-55.609,-61.984
61.0,-55.753,-62.128
62.0,-55.894,-62.269
63.0,-56.033,-62.408
64.0,-56.170,-62.545
65.0,-56.304,-62.679
66.0,-56.437,-62.812
67.0,-56.567,-62.943
68.0,-56.696,-63.071
69.0,-56.823,-63.198
70.0,-56.948,-63.323
71.0,-57.071,-63.446
72.0,-57.193,-63.568
73.0,-57.312,-63.688
74.0,-57.431,-63.806
75.0,-57.547,-63.922
76.0,-57.662,-64.037
77.0,-57.776,-64.151
78.0,-57.888,-64.263
79.0,-57.999,-64.374
80.0,-58.108,-64.483
81.0,-58.216,-64.591
82.0,-58.322,-64.697
83.0,-58.428,-64.803
84.0,-58.532,-64.907
85.0,-58.634,-65.010
86.0,-58.736,-65.111
87.0,-58.836,-65.212
88.0,-58.936,-65.311
89.0,-59.034,-65.409
90.0,-59.131,-65.506
91.0,-59.227,-65.602
92.0,-59.322,-65.697
93.0,-59.416,-65.791
94.0,-59.509,-65.884
95.0,-59.600,-65.976
96.0,-59.691,-66.067
97.0,-59.781,-66.157
98.0,-59.871,-66.246
99.0,-59.959,-66.334
100.0,-60.046,-66.421
101.0,-60.132,-66.508
102.0,-60.218,-66.593
103.0,-60.303,-66.678
104.0,-60.387,-66.762
105.0,-60.470,-66.845
106.0,-60.552,-66.927
107.0,-60.634,-67.009
108.0,-60.714,-67.090
109.0,-60.795,-67.170
110.0,-60.874,-67.249
111.0,-60.952,-67.328
112.0,-61.030,-67.406
113.0,-61.108,-67.483
114.0,-61.184,-67.559
115.0,-61.260,-67.635
116.0,-61.335,-67.710
117.0,-61.410,-67.785
118.0,-61.484,-67.859
119.0,-61.557,-67.932
120.0,-61.630,-68.005
121.0,-61.702,-68.077
122.0,-61.773,-68.148
123.0,-61.844,-68.219
124.0,-61.914,-68.290
125.0,-61.984,-68.359
126.0,-62.053,-68.429
127.0,-62.122,-68.497
128.0,-62.190,-68.565
129.0,-62.258,-68.633
130.0,-62.325,-68.700
131.0,-62.391,-68.767
132.0,-62.457,-68.833
133.0,-62.523,-68.898
134.0,-62.588,-68.963
135.0,-62.653,-69.028
136.0,-62.717,-69.092
137.0,-62.780,-69.156
138.0,-62.844,-69.219
139.0,-62.906,-69.281
140.0,-62.969,-69.344
141.0,-63.030,-69.406
142.0,-63.092,-69.467
143.0,-63.153,-69.528
144.0,-63.213,-69.588
145.0,-63.273,-69.649
146.0,-63.333,-69.708
147.0,-63.392,-69.768
148.0,-63.451,-69.826
149.0,-63.510,-69.885
150.0,-63.568,-69.943
151.0,-63.626,-70.001
152.0,-63.683,-70.058
153.0,-63.740,-70.115
154.0,-63.796,-70.172
155.0,-63.853,-70.228
156.0,-63.908,-70.284
157.0,-63.964,-70.339
158.0,-64.019,-70.394
159.0,-64.074,-70.449
160.0,-64.128,-70.504
161.0,-64.183,-70.558
162.0,-64.236,-70.611
163.0,-64.290,-70.665
164.0,-64.343,-70.718
165.0,-64.396,-70.771
166.0,-64.448,-70.823
167.0,-64.500,-70.876
168.0,-64.552,-70.927
169.0,-64.604,-70.979
170.0,-64.655,-71.030
171.0,-64.706,-71.081
172.0,-64.757,-71.132
173.0,-64.807,-71.182
174.0,-64.857,-71.232
175.0,-64.907,-71.282
176.0,-64.956,-71.331
177.0,-65.005,-71.381
178.0,-65.054,-71.430
179.0,-65.103,-71.478
180.0,-65.151,-71.527
181.0,-65.200,-71.575
182.0,-65.247,-71.623
183.0,-65.295,-71.670
184.0,-65.342,-71.718
185.0,-65.389,-71.765
186.0,-65.436,-71.811
187.0,-65.483,-71.858
188.0,-65.529,-71.904
189.0,-65.575,-71.950
190.0,-65.621,-71.996
191.0,-65.667,-72.042
192.0,-65.712,-72.087
193.0,-65.757,-72.132
194.0,-65.802,-72.177
195.0,-65.847,-72.222
196.0,-65.891,-72.266
197.0,-65.935,-72.310
198.0,-65.979,-72.354
199.0,-66.023,-72.398
200.0,-66.067,-72.442