我有一个关于一个点的距离和角度的信号强度的数据样本列表。数据示例如下所示:
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 value/10)时,我也遇到了问题。我似乎无法使索引正常工作。你知道吗
b[2]=math.pow(10,b[2]/10)
影响b中的所有列表,而不仅仅是b[2]。有人知道为什么吗?你知道吗
不太漂亮但是
哪些输出
我不知道你想要什么日志和权力,但这应该希望让你开始。你知道吗
你应该能用这样的东西得到你想要的。你知道吗
编辑
输出(不执行
np.pow(..)
)编辑2
Numpy数学运算作用于您提供的整个数组,因此不需要rssi上的循环。你知道吗
如果你更喜欢,你也可以做
相关问题 更多 >
编程相关推荐