• 大小: 22.74MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-27
  • 语言: C/C++
  • 标签: 测量平差  

资源简介

通过最小二乘法计算圆心坐标及半径,显示残差V=B*dX-L

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “Circle.h“
#include “Matrix.h“
#include 

CCircle::CCircle(void)
{
}


CCircle::~CCircle(void)
{
}

int CCircle::SplitStringArray(CString str char split CStringArray& aStr)
{
int startIdx = 0;
int idx = str.Find(split startIdx);
aStr.RemoveAll();//先清空

while (-1 != idx)
{
CString sTmp = str.Mid(startIdx idx - startIdx);
aStr.Add(sTmp);
startIdx = idx + 1;
idx = str.Find(split startIdx);
}
CString sTmp = str.Right(str.GetLength() - startIdx);
if (! sTmp.IsEmpty())
aStr.Add(sTmp);
return aStr.GetSize();
}

BOOL CCircle::Reorder(CString& str)
{
CStringArray aStrLine;
PCount=SplitStringArray(str13aStrLine); //得到数据的行数
if(PCount<3)
{
AfxMessageBox(_T(“输入的数据不完整!!!“));
return FALSE;
}
p=new HPOINT [PCount];

CStringArray aStrTmp;
int n;
for(int i=0;i {
n=SplitStringArray(aStrLine[i]‘ ‘aStrTmp);
p[i].x=_tstof(aStrTmp[1]);
p[i].y=_tstof(aStrTmp[2]);
}
return TRUE;
}

BOOL CCircle::LeastSquare(CString& str)
{
CMatrix B(PCount3);   //系数矩阵
CMatrix L(PCount1);   //常数项阵
CMatrix dX(PCount1);  //参数改正数
CMatrix V(PCount1);   //残差
CMatrix rou(PCount1);
CMatrix N(33);   //法方程系数阵
CMatrix W(31);   //法方程常数阵

double x0=0;
double y0=0;
for(int i=0;i {
x0+=p[i].x;
y0+=p[i].y;
}
x0=x0/PCount;
y0=y0/PCount;
double r0=1;

do
{
for(int i=0;i {
rou(i0)=sqrt(pow((p[i].x-x0)2)+pow((p[i].y-y0)2));
B(i0)=(x0-p[i].x)/rou(i0);
B(i1)=(y0-p[i].y)/rou(i0);
B(i2)=-1;
L(i0)=r0-rou(i0);
}

N=~B*B;
W=~B*L;
dX=N.Inv()*W;
x0=x0+dX(00);//拟合直线的斜距
y0=y0+dX(10);//拟合直线的斜率
r0=r0+dX(20);
}while (fabs(dX(20))>1e-5);
//CMatrix V;
V=B*dX-L;
//x=x0;
//y=y0;
//r=r0;
CString strastrbtemp;

stra.Format(_T(“  圆心坐标X  圆心坐标Y  半径R\r\n%10.4f%10.4f%10.4f\r\n“)x0y0r0);
for(int i=0;i {
strb.Format(_T(“%7.4f\r\n“)V(i0));
temp+=strb;
}
str=stra+“  残差V=B*dx-L\r\n“+temp;
return true;
}

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

     文件     190976  2016-10-20 14:58  FittingCircle\Debug\FittingCircle.exe

     文件    1280792  2016-10-20 14:58  FittingCircle\Debug\FittingCircle.ilk

     文件    5213184  2016-10-20 14:58  FittingCircle\Debug\FittingCircle.pdb

     文件       2162  2016-10-20 14:58  FittingCircle\FittingCircle\Circle.cpp

     文件        497  2016-10-20 14:50  FittingCircle\FittingCircle\Circle.h

     文件      57615  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\Circle.obj

     文件       4030  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\cl.command.1.tlog

     文件      69954  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\CL.read.1.tlog

     文件       4570  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\CL.write.1.tlog

     文件        915  2016-10-20 10:57  FittingCircle\FittingCircle\Debug\FittingCircle.exe.embed.manifest

     文件        980  2016-10-20 10:57  FittingCircle\FittingCircle\Debug\FittingCircle.exe.embed.manifest.res

     文件        640  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\FittingCircle.exe.intermediate.manifest

     文件         65  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\FittingCircle.lastbuildstate

     文件       3355  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\FittingCircle.log

     文件      30434  2016-10-20 14:51  FittingCircle\FittingCircle\Debug\FittingCircle.obj

     文件   33751040  2016-10-20 10:57  FittingCircle\FittingCircle\Debug\FittingCircle.pch

     文件      70064  2016-10-20 14:57  FittingCircle\FittingCircle\Debug\FittingCircle.res

     文件        713  2016-10-20 11:38  FittingCircle\FittingCircle\Debug\FittingCircle.vcxprojResolveAssemblyReference.cache

     文件          0  2016-10-20 10:57  FittingCircle\FittingCircle\Debug\FittingCircle.write.1.tlog

     文件      56553  2016-10-20 14:51  FittingCircle\FittingCircle\Debug\FittingCircleDlg.obj

     文件        216  2016-10-20 10:57  FittingCircle\FittingCircle\Debug\FittingCircle_manifest.rc

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link-cvtres.read.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link-cvtres.write.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.3192-cvtres.read.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.3192-cvtres.write.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.3192.read.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.3192.write.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.5816-cvtres.read.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.5816-cvtres.write.1.tlog

     文件          2  2016-10-20 14:58  FittingCircle\FittingCircle\Debug\link.5816.read.1.tlog

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

评论

共有 条评论