Ejemplo n.º 1
0
def calcPosition_Trilateration(d,nSensor,nAnchor,sigma,radiorange,iteN,type):
    print "Trilaterationによる位置計算を開始"
    locSensorNs = []
    RMSDs =[]
    for i in range(iteN):
        [posX,locX,disX,conX,noisyDisX,trueDisX,estPosX,cLevel] = problems.createProblem_random(d,nSensor,nAnchor,sigma,radiorange,i+100)
        if type==1:tri.localizeByTrilateration(nSensor,nAnchor,locX,conX,estPosX,noisyDisX,cLevel)
        [nLocSensor,preLocSensor] = helper.analyseLocalizability(nSensor,nAnchor,locX)

        locSensorNs.append(nLocSensor)
        rmsd = helper.calcRMSD(nSensor,locX,posX,estPosX)
        RMSDs.append(rmsd)

        print nLocSensor
        print rmsd
    perLocSensor = sum(locSensorNs)/nSensor/iteN
    perMinLocSensor = min(locSensorNs)/nSensor
    perMaxLocSensor = max(locSensorNs)/nSensor
    [aveRMSD,minRMSD,maxRMSD] = helper.analyseRMSDs(RMSDs)
    RMSDsModified = [elem for elem in RMSDs if elem<1]
    [aveRMSD_modified,a,b]= helper.analyseRMSDs(RMSDsModified)
    return [perLocSensor,perMinLocSensor,perMaxLocSensor,aveRMSD,minRMSD,maxRMSD,aveRMSD_modified]