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)
}
這個電流函數充當我的任務,但它不是理想的好解決方法。任何建議或提示,以改善我的代碼的功能將不勝感激。