在具有具有6个必要观测,4个多余观测的边角网测量中进行间接平差的matlab代码
时间: 2024-01-21 20:18:45 浏览: 128
基于matlab的水准网间接平差程序设计
3星 · 编辑精心推荐
这是一个基于最小二乘法的间接平差的Matlab代码示例,用于处理具有6个必要观测和4个多余观测的边角网测量:
```
% 定义观测值和观测方程
obs = [10.350; 12.050; 10.050; 9.400; 12.100; 11.050; 10.900; 12.200; 9.550; 12.150; 9.950; 12.100; 10.550; 12.450; 10.350; 12.550; 10.100; 9.550; 10.800; 9.750; 10.800; 10.050; 9.850; 11.750; 10.200; 11.500; 10.650; 11.500; 10.700; 11.100; 10.850; 11.200; 10.150; 12.150; 10.250; 12.100; 10.800; 11.450; 10.950; 11.400; 10.600; 10.900; 10.750; 10.350; 10.950; 9.900];
A = [-1 1 0 0 0 0 0 0 0; 0 -1 1 0 0 0 0 0 0; 0 0 -1 1 0 0 0 0 0; 0 0 0 -1 1 0 0 0 0; 0 0 0 0 -1 1 0 0 0; 0 0 0 0 0 -1 1 0 0; 0 0 0 0 0 0 -1 1 0; 0 0 0 0 0 0 0 -1 1; -1 0 0 1 0 0 0 0 0; 0 -1 0 0 1 0 0 0 0; 0 0 -1 0 0 1 0 0 0; 0 0 0 -1 0 0 1 0 0; -1 0 0 0 0 0 0 1 0; 0 -1 0 0 0 0 0 0 1; 0 0 -1 0 0 0 0 1 0; 0 0 0 -1 0 0 0 0 1; 1 0 0 0 -1 0 0 0 0; 0 1 0 0 0 -1 0 0 0; 0 0 1 0 0 0 -1 0 0; 0 0 0 1 0 0 0 -1 0; 0 0 0 0 1 0 0 0 -1; 1 0 0 0 0 0 0 -1 0; 0 1 0 0 0 0 0 0 -1; 0 0 1 0 0 0 0 -1 0; 0 0 0 1 0 0 0 0 -1];
% 定义权矩阵
P = eye(24);
P(19:24,19:24) = 100*eye(6);
% 计算未知数的数目
n = 9;
% 计算观测值和观测方程的权矩阵
W = sqrt(P);
l = W*obs;
A = W*A;
% 计算法方程
N = A'*A;
f = A'*l;
% 解法方程
x = N\f;
% 计算残差
v = A*x - l;
% 计算单位权中误差
s0 = sqrt(v'*P*v/(24-n));
% 计算各未知数的方差-协方差矩阵
Qxx = s0^2*inv(N);
% 输出结果
disp(['未知数:'])
disp(x)
disp(['单位权中误差:', num2str(s0)])
disp(['各未知数的方差-协方差矩阵:'])
disp(Qxx)
```
其中,`obs` 是观测值向量,`A` 是观测方程矩阵,`P` 是权矩阵,`n` 是未知数的数目。代码中的注释详细解释了每一步的计算过程。
阅读全文