def HDFOptimizer(self, P, RN_RSS, RN_ToA, RN_TDoA, RN_TDoA2, ToA, ToAStd, TDoA, TDoAStd, PL0, d0, RSS, RSSnp, RSSStd, Rest): """ This applies LS approximation to get position P. Return P """ RSSL=RSSLocation(RN_RSS) TOAL=ToALocation(RN_ToA) TDOAL=TDoALocation(RN_TDoA) if RN_RSS==None: shRN_TDoA = shape(RN_TDoA) RNnum_TDoA = shRN_TDoA[1] #RN_TDoA2= RN_ToA[:,0:1]*ones((1,RNnum_TDoA)) fopt=TOAL.ToAOptimizer(P, RN_ToA, ToA, ToAStd) + TDOAL.TDoAOptimizer(P, RN_TDoA, RN_TDoA2, TDoA, TDoAStd) return fopt elif RN_ToA==None: shRN_TDoA = shape(RN_TDoA) RNnum_TDoA = shRN_TDoA[1] #RN_TDoA2= RN_RSS[:,0:1]*ones((1,RNnum_TDoA)) fopt=RSSL.DRSSOptimizer(P, RN_RSS, PL0, d0, RSS, RSSnp, RSSStd) + TDOAL.TDoAOptimizer(P, RN_TDoA, RN_TDoA2, TDoA, TDoAStd) return fopt elif RN_TDoA==None: fopt=RSSL.DRSSOptimizer(P, RN_RSS, PL0, d0, RSS, RSSnp, RSSStd) + TOAL.ToAOptimizer(P, RN_ToA, ToA, ToAStd) return fopt else: shRN_TDoA = shape(RN_TDoA) RNnum_TDoA = shRN_TDoA[1] #RN_TDoA2= RN_TDoA[:,0:1]*ones((1,RNnum_TDoA)) fopt=RSSL.DRSSOptimizer(P, RN_RSS, PL0, d0, RSS, RSSnp, RSSStd) + TOAL.ToAOptimizer(P, RN_ToA, ToA, ToAStd) + TDOAL.TDoAOptimizer(P, RN_TDoA, RN_TDoA2, TDoA, TDoAStd) return fopt