简单三边定位算法Java代码

public class Algorithem {
    public static void main(String[] args){
        double[] xy = Algorithem.trilateration(12641371.971, 4138703.5211, 6, 12641381.9026, 4138706.4714, 6, 12641370.7839, 4138708.7705, 6);
        System.out.println(xy[0]+"::"+xy[1]);
    }
    public static double[] trilateration(double x1,double y1,double d1, double x2, double y2,double d2, double x3, double y3, double d3)
    {
        double []d={0.0,0.0};
        double a11 = 2*(x1-x3);
        double a12 = 2*(y1-y3);
        double b1 = Math.pow(x1,2)-Math.pow(x3,2) +Math.pow(y1,2)-Math.pow(y3,2) +Math.pow(d3,2)-Math.pow(d1,2);
        double a21 = 2*(x2-x3);
        double a22 = 2*(y2-y3);
        double b2 = Math.pow(x2,2)-Math.pow(x3,2) +Math.pow(y2,2)-Math.pow(y3,2) +Math.pow(d3,2)-Math.pow(d2,2);
        d[0]=(b1*a22-a12*b2)/(a11*a22-a12*a21);
        d[1]=(a11*b2-b1*a21)/(a11*a22-a12*a21);
        return d;
    }
}

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
三边定位算法是一种常用的室内定位技术,Matlab作为一种常用的计算工具,可以方便地进行算法调试和仿真。以下是三边定位算法在Matlab中的实现方法: 1. RSSI三边定位算法的Matlab实现方法 ```matlab % RSSI三边定位算法的Matlab实现方法 % 假设有三个基站,分别位于(x1,y1),(x2,y2),(x3,y3)处,接收到的信号强度分别为r1,r2,r3 % 则目标点(x,y)满足以下方程组: % (x-x1)^2 + (y-y1)^2 = r1^2 % (x-x2)^2 + (y-y2)^2 = r2^2 % (x-x3)^2 + (y-y3)^2 = r3^2 % 可以通过解方程组得到目标点的坐标(x,y) % 假设三个基站的坐标和接收到的信号强度如下: x1 = 0; y1 = 0; r1 = 5; x2 = 5; y2 = 0; r2 = 4; x3 = 0; y3 = 5; r3 = 3; % 解方程组 A = [2*(x1-x3) 2*(y1-y3); 2*(x2-x3) 2*(y2-y3)]; b = [r3^2-r1^2-(x3^2-x1^2)-(y3^2-y1^2); r3^2-r2^2-(x3^2-x2^2)-(y3^2-y2^2)]; xy = A\b; % 输出目标点坐标 x = xy(1); y = xy(2); disp(['目标点坐标为:(', num2str(x), ',', num2str(y), ')']); ``` 2. 三遍测量术的Matlab实现方法 ```matlab % 三遍测量术的Matlab实现方法 % 假设有三个测量点,分别位于(x1,y1),(x2,y2),(x3,y3)处,测量得到的距离分别为d1,d2,d3 % 则目标点(x,y)满足以下方程组: % (x-x1)^2 + (y-y1)^2 = d1^2 % (x-x2)^2 + (y-y2)^2 = d2^2 % (x-x3)^2 + (y-y3)^2 = d3^2 % 可以通过解方程组得到目标点的坐标(x,y) % 假设三个测量点的坐标和测量距离如下: x1 = 0; y1 = 0; d1 = 5; x2 = 5; y2 = 0; d2 = 4; x3 = 0; y3 = 5; d3 = 3; % 解方程组 A = [2*(x1-x3) 2*(y1-y3); 2*(x2-x3) 2*(y2-y3)]; b = [d3^2-d1^2-(x3^2-x1^2)-(y3^2-y1^2); d3^2-d2^2-(x3^2-x2^2)-(y3^2-y2^2)]; xy = A\b; % 输出目标点坐标 x = xy(1); y = xy(2); disp(['目标点坐标为:(', num2str(x), ',', num2str(y), ')']); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值