⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 one_wayd.m

📁 it is a source code from internet
💻 M
字号:
%ONE_WAYD  Brute way to create one_way data files

%Kai Borre 01-10-97
%Copyright (c) by Kai Borre
%$Revision: 1.0 $  $Date: 1997/09/22  $

c0 = 299792458;
f1 = 154*10.23e6;
f2 = 120*10.23e6;
lambda1 = c0/f1;
lambda2 = c0/f2;

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',...
                                          s1(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 %I'm not sure if it's correct

% 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;					% clumsy programming!!
   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;					% clumsy programming!!
   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

% 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

% printout of one-way data 01-10-97

for k = 1:ms
   start = (k-1)*noepochs+1;
   slut = k*noepochs;
   P1 = datar(start:slut,3);
   Phi1 = datar(start:slut,4)*lambda1;
   P2 = datar(start:slut,5);
   Phi2 = datar(start:slut,6)*lambda2;
   elev = datar(start:slut,7);
   b = [P1 Phi1 P2 Phi2 elev];
   
   fid = fopen(['one_w' int2str(svs1(k)) '.dat'],'w');
   fwrite(fid,b,'double');
   fclose(fid);
end

for k = 1:ms
   start = (k-1)*noepochs+1;
   slut = k*noepochs;
   P1 = datam(start:slut,3);
   Phi1 = datam(start:slut,4)*lambda1;
   P2 = datam(start:slut,5);
   Phi2 = datam(start:slut,6)*lambda2;
   elev = datam(start:slut,7);
   b = [P1 Phi1 P2 Phi2 elev];
   
   fid = fopen(['one_y' int2str(svs1(k)) '.dat'],'w');
   fwrite(fid,b,'double');
   fclose(fid);
end
%%%%%%%%%%one_wayd.m  %%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -