📄 ash_dd.m
字号:
%ASH_DD Arrangement and Formatting of Double Differenced Code
% and Phase Observations.
%Kai Borre 04-28-96
%Copyright (c) by Kai Borre
%$Revision: 1.0 $ $Date: 1997/09/23 $
%THIS SAMPLE CODE DOES NOT ACCOUNT FOR CYCLE SLIPS
% Initial computations of constants
v_light = 299792458; % vacuum speed of light m/s
f1 = 154*10.23E6; % L1 frequency Hz
f2 = 120*10.23E6; % L2 frequency Hz
lambda1 = v_light/f1; % wavelength on L1: .19029367 m
lambda2 = v_light/f2; % wavelength on L2: .244210213 m
alpha1 = f1^2/(f1^2-f2^2); % parameters for ionosphere free
alpha2 = -f2^2/(f1^2-f2^2); % combination
omegae = 7.292115147e-5; % rotation rate of the earth rad/s
Big = 10^10;
fidb = fopen('bdata.dat');
[da,count] = fread(fidb,Inf,'double');
rows = count/7;
B = reshape(da,rows,7);
clear da
i1 = [];
for i = 1:rows-1
if B(i+1,1) < B(i,1), i1 = [i1 i]; end;
end
BR = B(1:i1,:); % rover data
BM = B(i1+1:rows,:); % master data
clear B
% Further preparation of data from rover
[sats,indsv] = sort(BR(:,2));
[mr,nr] = size(BR);
s1 = [];
sats(1) = 0;
for i = 2:mr
if sats(i) > sats(i-1), s1 = [s1 i]; end;
end
svs1 = sats([s1]); % satellites observed at rover
[nosvs1,nr] = size(svs1);
t1 = zeros(nosvs1,1);
sum = zeros(nosvs1,1);
for t = 1:nosvs1
for i = 1:mr
if sats(i) == svs1(t), sum(t) = sum(t)+BR(indsv(i),7);
t1(t) = t1(t)+1;
end;
end;
end;
for i = 1:nosvs1
fprintf('Satellite %3.0f has average elevation %4.1f\n',...
svs1(i), sum(i)/t1(i));
end
% Reference satellite
[maxv,maxi] = max(t1); % t1 counts number of epochs for each satellite
ar1 = svs1((t1-maxv) == 0);
[y1,in1] = max(sum ./t1);
if any(ar1-svs1(in1))
refsv = svs1(in1);
else
refsv = svs1(in1);
end
% Cutoff angle set to 15 degrees; deletion of low satellites
svs1(sum ./t1 < 15) = [];
[ms,ns] = size(svs1);
fprintf('Cutoff angle: %3.0f\n', 15)
fprintf('Satellites used: %3.0f\n', svs1)
% Arranging data epoch-by-epoch for all satellites
for i = 1:ms
for tt = 1:mr
if svs1(i) == sats(tt)
datar = BR(indsv(1:tt),:);
end;
end;
end;
[md,nd] = size(datar);
clear BR
% Deletion of data for low satellites
i = 0;
del_i = [];
while 1
i = i+1;
if i == md, break, end;
vec = svs1-datar(i,2);
y = all(vec);
if y > 0, del_i = [del_i i]; end;
end
datar(del_i,:) = [];
[mr,nr] = size(datar);
noepochs = mr/ms;
% Preparation of data from master
[sats,indsv] = sort(BM(:,2));
[mm,nm] = size(BM);
for i = 1:ms
for tt = 1:mm
if svs1(i) == sats(tt),
datam = BM(indsv(1:tt),:);
end;
end;
end;
[md,nd] = size(datam);
i = 0;
del_i = [];
while 1
i = i+1;
if i == md, break, end;
vec = svs1-datam(i,2);
y = all(vec);
if y > 0, del_i = [del_i i]; end;
end
datam(del_i,:) = [];
clear BM
% Small manipulations around the reference satellite
for i = 1:ms
if svs1(i) == refsv, break, end;
end;
i_refsv = i;
svs1(i_refsv) = [];
% Data for the reference satellite copied to own variables; and
% deleted in original variables datar and datam. This makes life
% much easier!
refstart = (i_refsv-1)*noepochs+1;
refslut = i_refsv*noepochs;
datarref = datar(refstart:refslut,:);
datamref = datam(refstart:refslut,:);
datar(refstart:refslut,:) = [];
datam(refstart:refslut,:) = [];
% Each row in a data-file has 7 columns with the following contents
% #1 #2 #3 #4 #5 #6 #7
% epoch sv P1 Phi1 P2 Phi2 elevation
wl = [];
n1 = [];
ef = 5; % first epoch
el = 90; % last epoch
fprintf('\nReference Satellite: %3.0f\n\n', refsv)
fprintf('Begin time %10.0f\n', datar(ef,1))
fprintf('End time %10.0f\n\n', datar(el,1))
fprintf('Epoch interval %4.0f\n\n', datar(2,1)-datar(1,1))
%%%%%%% end ash_dd.m %%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -