ある点についての距離と角度での信号強度のデータ サンプルのリストがあります。データのサンプルは次のようになります。
0.5,0,-21
0.5,0,-23
1.0,0,-29
1.0,0,-30
0.5,45,-22
0.5,45,-23
データは半径、角度、rssi (信号強度) で構成されています。
ご覧のとおり、信号強度の測定値は複数ありますが、共通の半径を持つものもあれば、共通の角度を持つものもあります。リストを移動して、共通の半径と角度を持つすべての行を見つけ、rssi を平均化し、半径、角度、および平均化された rssi を新しいリストに追加する簡単な方法を見つけようとしています。
私がやろうとしている方法は次のとおりです。
import numpy as np
import math
#create 3 lists
original_data=[] # list to import the original data to
interim_data=[] # list to group rows with common radii and angles
R=[]
P=[]
Z=[]
#import data
original_data=np.genfromtxt('bot1.csv', delimiter=',')
#convert rssi to linear
for b in original_data:
b[2]=math.pow(10,b[2]/10)
for item in original_data:
if item[0] and item[1] not in R and P: #check if the common r and theta have been searched for already
for a in original_data:
if a[0] == item[0] and a[1] == item[1]:
interim_data.append(a)
#Once all rows in orginal data have been checked, average the result in interim data and place in averaged lists R, P and Z
Z.append(10*math.log10(sum(interim_data[3])/len(interim_data)))
R.append(item[0])
P.append(item[1])
ただし、このコード Z、R、および P を実行すると、空のままになります。より多くの for ループを使用していくつかのバリエーションを試しましたが、私がやろうとしていることを行うためのより簡単な方法があるかどうか疑問に思っています。
線形値 = 10^(rssi dBm 値/10) に変換するときにも問題が発生します。インデックス作成がうまくいかないようです。
b[2]=math.pow(10,b[2]/10)
b[2] だけでなく、b のすべてのリストに影響します。その理由を知っている人はいますか?