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]