针对当前室内定位精度低、实现复杂的问题,提出了一种基于行人航迹推算(PDR)的行人室内定位算法。通过采集手机内置惯性传感器加速度计、陀螺仪和磁力计的原始数据解算用户位置,利用加速度数据解算得到行人步频和步长,四元数解算陀螺仪数据得到行人姿态航向,再利用扩展卡尔曼滤波(EKF)融合各传感器数据解算出更精确的航向信息,最后通过位置更新得到行人位置。实验结果表明,室内定位精度优于1.8%,算法不需要额外布置信标节点,具有较高的定位精度、较低的实现复杂度和较高的实用性。