背景:我有兴趣从一套录音机中本地化一个声源。每个音频阵列由 6 个定向麦克风组成,每 60 度(0、60、120、180、240、300 度)均匀分布。我有兴趣找到具有最大信号强度的相邻麦克风对。数据由时间戳、天线编号和方位以及信号强度组成。下面我附上了一个简化的数据集。
df <- data.frame(ant.bearing = seq(0,300, by=60), sig = c(98, 60, 44, 67, 58, 91), ts=1)
目标:从这个数据集中,我想使用一个函数来提取具有最大信号强度集的两个相邻天线(即上述示例代码中方位角为 0 度和 300 度的天线),同时考虑到该数据在自然和天线 0 和 300 是邻居。输出将是满足上述任务的两行数据,例如上述情况下的第 1 行和第 6 行。
我试过的:
direction.finder <- function(dat){
# finding bearing with max signal strength
max <- dat[dat$sig == max(dat$sig),][1,]
# finding signal strengths of neighbor antennas and pulling out which has highest
left = dat[dat$ant.bearing==max$ant.bearing-60,]
right = dat[dat$ant.bearing==max$ant.bearing+60,]
if(max$ant.bearing==0)
left = dat[dat$ant.bearing==300,]
if(max$ant.bearing==300)
right = dat[dat$ant.bearing==0,]
sub = right
if(left$sig > right$sig)
sub = left
dat <- rbind(max, sub)
}
这个当前功能可以作为我的任务的一个好的解决方法,但它并不理想。任何改进我的代码功能的建议或技巧将不胜感激。