资源简介
包含质心定位 四边测距定位 加权四边测距定位算法,matlab编写,并比较这几种方法的定位误差
代码片段和文件信息
#include
#include
#include
#include
#define RSSI0 -58.13
#define Y 2.07
#define X 0.0
#define NMIN 4
#define NMAX 6
// 定义iBeacon节点
typedef struct
{
int num; // 节点编号
double x y; // iBeacon节点坐标
double rssi; // 用户接收的信号强度值
double d; // 到用户距离
} Beacon;
// 定义用户节点
typedef struct
{
double d; // 平均距离
double x y; // 用户坐标
} User;
// 计算二元一次方程解
bool calcM2x3(const double m[][3] double *x double *y)
{
double d = m[0][0]*m[1][1] - m[0][1]*m[1][0];
if(fabs(d) < 0.001)
return false;
double dx = m[0][2]*m[1][1] - m[0][1]*m[1][2];
double dy = m[0][0]*m[1][2] - m[0][2]*m[1][0];
*x = dx / d;
*y = dy / d;
return (*x < 0.0 || *y < 0.0) ? false : true;
}
// 计算用户节点位置
bool calcPosition(Beacon *node User *u int i1 int i2 int i3)
{
double m[3][3] = {
{
2* (node[i2].x - node[i1].x)
2* (node[i2].y - node[i1].y)
pow(node[i1].d 2.0) - pow(node[i2].d 2.0) -
pow(node[i1].x 2.0) + pow(node[i2].x 2.0) -
pow(node[i1].y 2.0) + pow(node[i2].y 2.0)
}
{
2* (node[i3].x - node[i2].x)
2* (node[i3].y - node[i2].y)
pow(node[i2].d 2.0) - pow(node[i3].d 2.0) -
pow(node[i2].x 2.0) + pow(node[i3].x 2.0) -
pow(node[i2].y 2.0) + pow(node[i3].y 2.0)
}
{
2* (node[i3].x - node[i1].x)
2* (node[i3].y - node[i1].y)
pow(node[i1].d 2.0) - pow(node[i3].d 2.0) -
pow(node[i1].x 2.0) + pow(node[i3].x 2.0) -
pow(node[i1].y 2.0) + pow(node[i3].y 2.0)
}
};
double m1[2][3] = {
m[0][0] m[0][1] m[0][2]
m[1][0] m[1][1] m[1][2]
};
double m2[2][3] = {
m[0][0] m[0][1] m[0][2]
m[2][0] m[2][1] m[2][2]
};
double m3[2][3] = {
m[1][0] m[1][1] m[1][2]
m[2][0] m[2][1] m[2][2]
};
double w[NMIN] = {
1.0/node[i1].d
1.0/node[i2].d
1.0/node[i3].d
1.0/node[i1].d + 1.0/node[i2].d + 1.0/node[i3].d
};
u->d = (node[i1].d*w[0] + node[i2].d*w[1] + node[i3].d*w[2]) / w[NMIN];
if (calcM2x3(m1 &u->x &u->y) == true)
return true;
else if(calcM2x3(m2 &u->x &u->y) == true)
return true;
else if(calcM2x3(m3 &u->x &u->y) == true)
return true;
return false;
}
// 快速排序规则
int inc(const void *a const void *b)
{
double diff = (*(Beacon *)a).d - (*(Beacon *)b).d;
if (diff < 0 && fabs(diff) > 0.001)
return -1;
else if(diff > 0 && fabs(diff) > 0.001)
return 1;
else
return 0;
}
int main(void)
{
Beacon node[NMAX] = {
{ 1 0.0 0.0 -64 2.28 }
{ 2 2.1 0.0 -62 0.90 }
{ 3 4.2 0.0 -71 2.28 }
{ 4 0.0 1.8 -65 2.28 }
{ 5 2.1 1.8 -71 0.90 }
{ 6 4.2 1.8 -6
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\
文件 147 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\.editorconfig
文件 5118 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\main.c
目录 0 2020-03-18 22:46 rssiPosition-master\rssiPosition-master\MATLAB\
文件 1721 2020-03-18 22:46 rssiPosition-master\rssiPosition-master\MATLAB\Barycenter.m
文件 766 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Quadrilateral.m
文件 3693 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Simulation.asv
文件 3063 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Simulation.m
文件 2524 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Simulation2.asv
文件 2758 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Simulation2.m
文件 475 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\TestValue.m
文件 765 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Trilateral.m
文件 207 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\Unti
文件 1016 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\MATLAB\WeightedQuadrilateral.m
文件 84 2020-03-18 22:51 rssiPosition-master\rssiPosition-master\MATLAB\新建文本文档.txt
文件 345 2019-04-12 17:08 rssiPosition-master\rssiPosition-master\README.md
- 上一篇:Huffman编解码算法及matlab实现
- 下一篇:变异系数法计算权重
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论