• 大小: 1.16MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-05
  • 语言: C/C++
  • 标签:

资源简介

绝对是好东西啊!基于极大似然估计的三维定位算法,输入参考点的坐标以及观察点的距离,通过极大似然估计算法计算出观察点的坐标,附送支持矩阵运算的C++类库!

资源截图

代码片段和文件信息

// LMLE.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
//
//
//int _tmain(int argc _TCHAR* argv[])
//{
// return 0;
//}

// LMLE.cpp : 定义控制台应用程序的入口点。
//
///////////////////////////必要的包含头///////////////////////////////////
//如果要使用Matrix类,就必须包含下面文件
#include “matrix.h“
//为保证正确使用计算空间,进行如下的命名空间引用以及宏定义
#ifndef _NO_NAMESPACE
using namespace std;
using namespace math;
#define STD std
#else
#define STD
#endif
#ifndef _NO_TEMPLATE
typedef matrix Matrix;
#else
typedef matrix Matrix;
#endif
//如果要讲LMLE函数进行移植的话,请将上面部分保留到移植的文件中
//////////////////////////////////////////////////////////////////////////

// LMLE用于计算已知n个观测点P的三维坐标,以及到被观测目标的距离L的情况下,估算观测目标的三维坐标
// 因L存在误差因此采用LMLE即线性最大似然比模型求估计解
// 为保证计算不会出错,请一定保证每个观测点位置是不一样,即观测值不能完全一样,这样保证矩阵满秩,才可以求逆

double * LMLE(double * Pdouble *Lint n)
{
Matrix A(n3);//观测矩阵
Matrix b(n1);//观测结果
Matrix X(31);//求解坐标,xdydhd

//下面根据PL生成观测矩阵H
int ijk;
double xkxjykyjhkhjljlk;
for (i=0;i {
j = i; k = (i+1)%n;//后面的点与前面的点求差,最后一个与第一个求差
xk = *(P+3*k);
xj = *(P+3*j);
yk = *(P+3*k+1);
yj = *(P+3*j+1);
hk = *(P+3*k+2);
hj = *(P+3*j+2);
lk = *(L+k);
lj = *(L+j);
A(i0) = 2*(xk-xj);
A(i1) = 2*(yk-yj);
A(i2) = 2*(hk-hj);
b(i0)= lj*lj-lk*lk+xk*xk-xj*xj+yk*yk-yj*yj+hk*hk-hj*hj;//即公式:lj^2-lk^2+xk^2-xj^2+yk^2-yj^2+hk^2-hj^2
}
X = (!((~A)*A))*(~A)*b;//即(AT*A)*(AT)*bAT表示A的转置
double * P0 = new double[3];
P0[0] = X(00);
P0[1] = X(10);
P0[2] = X(20);
return P0;
}

int main(int argc char* argv[])
{
double * P;  //已知的几个观测位置坐标,格式:x1y1h1x2y2h2....
double * L;  //观测到的距离,格式:L1L2L3...
int n;  //观测站的数目:3到8

//以下是数据输入初始化,请根据自己需要,自行设置:
n = 4;
P = new double[12];
P[0] = 4.2;
P[1] = 20.0;
P[2] = 0.0;
P[3] = 8.2;
P[4] = 13.7;
P[5] = 0.5;
P[6] = 4.7;
P[7] = 17.2;
P[8] = 1.0;
P[9] = 5.5;
P[10] = 10.5;
P[11] = 0;
L = new double[4];
L[0] = 2.881996;
L[1] = 2.881996;
L[2] = 2.998050;
L[3] = 2.939451;

//调用LMLE()计算输出结果如果前面数据初始化了,下面两行可以去除注释,可以计算结果
double * p0;//计算出来的结果,p0[3]方式存储
p0 = LMLE(PLn);

//输出p0
printf(“xd=%fyd=%fhd=%f\n“p0[0]p0[1]p0[2]);

scanf(“%d“&n);
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      61440  2012-11-02 14:01  LMLE\debug\LMLE.exe

     文件     387516  2012-11-02 14:01  LMLE\debug\LMLE.ilk

     文件     584704  2012-11-02 14:01  LMLE\debug\LMLE.pdb

     文件      20944  2012-11-02 14:01  LMLE\LMLE\Debug\BuildLog.htm

     文件        406  2012-11-02 14:00  LMLE\LMLE\Debug\LMLE.exe.embed.manifest

     文件        472  2012-11-02 14:00  LMLE\LMLE\Debug\LMLE.exe.embed.manifest.res

     文件        388  2012-11-02 14:01  LMLE\LMLE\Debug\LMLE.exe.intermediate.manifest

     文件      77715  2012-11-02 14:01  LMLE\LMLE\Debug\LMLE.obj

     文件    1048576  2012-11-02 14:00  LMLE\LMLE\Debug\LMLE.pch

     文件         65  2012-11-02 14:01  LMLE\LMLE\Debug\mt.dep

     文件      10868  2012-11-02 14:00  LMLE\LMLE\Debug\stdafx.obj

     文件     183296  2012-11-02 14:01  LMLE\LMLE\Debug\vc80.idb

     文件     249856  2012-11-02 14:01  LMLE\LMLE\Debug\vc80.pdb

     文件       2600  2012-11-02 14:01  LMLE\LMLE\LMLE.cpp

     文件       4538  2012-09-05 14:27  LMLE\LMLE\LMLE.vcproj

     文件       1403  2012-11-02 14:03  LMLE\LMLE\LMLE.vcproj.HZT.Administrator.user

     文件      27343  2012-09-05 14:27  LMLE\LMLE\matrix.h

     文件        932  2012-09-05 14:27  LMLE\LMLE\ReadMe.txt

     文件      21804  2012-11-02 14:03  LMLE\LMLE\Release\BuildLog.htm

     文件        383  2012-11-02 14:03  LMLE\LMLE\Release\LMLE.exe.intermediate.manifest

     文件     463479  2012-11-02 14:03  LMLE\LMLE\Release\LMLE.obj

     文件    1048576  2012-11-02 14:03  LMLE\LMLE\Release\LMLE.pch

     文件         65  2012-11-02 14:03  LMLE\LMLE\Release\mt.dep

     文件      29508  2012-11-02 14:03  LMLE\LMLE\Release\stdafx.obj

     文件     101376  2012-11-02 14:03  LMLE\LMLE\Release\vc80.idb

     文件     217088  2012-11-02 14:03  LMLE\LMLE\Release\vc80.pdb

     文件        209  2012-09-05 14:27  LMLE\LMLE\stdafx.cpp

     文件        378  2012-09-05 14:27  LMLE\LMLE\stdafx.h

     文件    2059264  2012-11-02 14:03  LMLE\LMLE.ncb

     文件        877  2012-09-05 14:27  LMLE\LMLE.sln

............此处省略12个文件信息

评论

共有 条评论

相关资源