2
背景:我有兴趣从一套音频记录器本地化声源。每个音频阵列由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)
}
这个电流函数充当我的任务,但它不是理想的好解决方法。任何建议或提示,以改善我的代码的功能将不胜感激。