SoftGNSS/GNSS_SDR_IQ/test/test_find_pseudorangeV3.m
2025-10-22 16:08:12 +07:00

80 lines
7.1 KiB
Matlab

clear all;
format ('compact');
format ('long', 'g');
%--- Include folders with functions ---------------------------------------
addpath ..\include % The software receiver functions
addpath ..\geoFunctions % Position calculation related functions
addpath ..\
%
eph(1)=alm2eph(01,000,0.6089210510E-003,319488.0000,0.9603762360,-0.7703178011E-008,5153.611328,-0.4829672597E+000,0.448441831,0.1078930031E+001,0.2498626709E-003,0.3637978807E-011,660);
eph(2)=alm2eph(02,000,0.1115465164E-001,319488.0000,0.9389244734,-0.7908900866E-008,5153.631348,-0.4958443094E+000,-2.809621010,0.2218454550E+001,0.3871917725E-003,0.0000000000E+000,660);
eph(3)=alm2eph(03,000,0.1515722275E-001,319488.0000,0.9305415081,-0.8491782288E-008,5153.643066,-0.1659458993E+001,1.181482789,0.2379413177E+001,0.3719329834E-004,0.3637978807E-011,660);
eph(4)=alm2eph(04,000,0.9991168976E-002,319488.0000,0.9379956960,-0.7943188009E-008,5153.538574,-0.4788974919E+000,0.847107933,-0.9274007423E+000,0.1573562622E-003,0.1091393642E-010,660);
eph(5)=alm2eph(05,000,0.2665519714E-002,319488.0000,0.9516277518,-0.8114623721E-008,5153.590820,0.5668834241E+000,0.270158135,-0.2060905436E+001,-0.3061294556E-003,-0.3637978807E-011,660);
eph(6)=alm2eph(06,000,0.7264614105E-002,319488.0000,0.9374384295,-0.8388920861E-008,5153.626465,-0.1583104500E+001,-0.571736286,-0.1994561141E+001,0.3051757812E-004,0.0000000000E+000,660);
eph(7)=alm2eph(07,000,0.5239486694E-002,319488.0000,0.9759377520,-0.7600316584E-008,5153.573242,0.2677930857E+001,-3.025051684,0.7919763793E+000,0.7343292236E-004,0.3637978807E-011,660);
eph(8)=alm2eph(08,000,0.1217508316E-001,319488.0000,0.9981205523,-0.7360306586E-008,5153.654297,0.2760384571E+001,-2.973606028,0.1349558547E+000,0.9536743164E-006,0.0000000000E+000,660);
eph(9)=alm2eph(09,000,0.1739597321E-001,319488.0000,0.9846802441,-0.7531742299E-008,5153.587402,0.2651920220E+001,1.608567982,0.1053926444E+000,0.1525878906E-003,0.3637978807E-011,660);
eph(10)=alm2eph(10,000,0.1123762131E-001,319488.0000,0.9464985035,-0.8160339911E-008,5153.638184,0.5886651274E+000,0.750733793,-0.1733515886E+001,-0.3623962402E-004,0.0000000000E+000,660);
eph(11)=alm2eph(11,000,0.1282930374E-001,319488.0000,0.8881173519,-0.8491782288E-008,5153.611328,-0.7499888984E+000,1.039330032,0.9152022994E+000,-0.2527236938E-003,-0.3637978807E-011,660);
eph(12)=alm2eph(12,000,0.4001140594E-002,319488.0000,0.9794311536,-0.7771752296E-008,5153.480469,-0.2549682797E+001,0.000377129,0.6203858726E+000,0.6389617920E-004,0.3637978807E-011,660);
eph(13)=alm2eph(13,000,0.4957675934E-002,319488.0000,0.9858367218,-0.7943188009E-008,5153.634766,0.1706998915E+001,1.966194481,0.3108981705E+001,0.2126693726E-003,-0.3637978807E-011,660);
eph(14)=alm2eph(14,000,0.6207942963E-002,319488.0000,0.9787001159,-0.8034620388E-008,5153.526367,0.1680551604E+001,-2.062171644,-0.3064875263E+001,0.2002716064E-003,0.0000000000E+000,660);
eph(15)=alm2eph(15,000,0.4376411438E-002,319488.0000,0.9455757182,-0.8423208003E-008,5153.482910,0.1593964081E+001,0.051864355,0.2731660256E+001,-0.9155273438E-004,0.0000000000E+000,660);
eph(16)=alm2eph(16,000,0.6625175476E-002,319488.0000,0.9802640572,-0.7760323249E-008,5153.603516,-0.2531562275E+001,-0.045607466,-0.1728320350E+001,-0.2317428589E-003,0.0000000000E+000,660);
eph(17)=alm2eph(17,000,0.7328033447E-002,319488.0000,0.9623176804,-0.8068907531E-008,5153.607910,-0.1490675042E+001,-2.304936462,-0.2711252245E+001,0.1344680786E-003,-0.3637978807E-011,660);
eph(18)=alm2eph(18,000,0.1311016083E-001,319488.0000,0.9303317841,-0.8308917528E-008,5153.628906,0.5780654549E+000,-2.186412103,-0.1227346417E+001,0.1916885376E-003,0.0000000000E+000,660);
eph(19)=alm2eph(19,000,0.8131980896E-002,319488.0000,0.9597111115,-0.8126052768E-008,5153.715820,-0.1437500287E+001,0.147952747,0.2737129183E+001,-0.2565383911E-003,-0.3637978807E-011,660);
eph(20)=alm2eph(20,000,0.5052089691E-002,319488.0000,0.9307991689,-0.8286059433E-008,5153.665039,0.5243289395E+000,1.294038254,-0.8728399369E+000,0.6294250488E-004,0.0000000000E+000,660);
eph(21)=alm2eph(21,000,0.1900386810E-001,319488.0000,0.9316919937,-0.7966046104E-008,5153.575684,-0.4726548342E+000,-2.265382153,-0.1699243249E+000,-0.2183914185E-003,-0.3637978807E-011,660);
eph(22)=alm2eph(22,000,0.5940437317E-002,319488.0000,0.9280487893,-0.8331775623E-008,5153.624023,0.5815221548E+000,-2.014531354,-0.2056676877E+001,0.1430511475E-003,0.0000000000E+000,660);
eph(23)=alm2eph(23,000,0.7733345032E-002,319488.0000,0.9602863543,-0.8251772291E-008,5153.587891,0.1629128043E+001,-3.022881416,0.2337312969E+001,0.2136230469E-003,-0.3637978807E-011,660);
eph(25)=alm2eph(25,000,0.1533985138E-002,319488.0000,0.9682918165,-0.7851755629E-008,5153.677246,-0.2583294803E+001,0.621595530,-0.6206161945E+000,0.3337860107E-004,0.0000000000E+000,660);
eph(26)=alm2eph(26,000,0.2096986771E-001,319488.0000,0.9833859478,-0.7954617056E-008,5153.609863,0.1701079083E+001,1.187253567,0.2193132632E+001,-0.3204345703E-003,-0.5456968211E-010,660);
eph(27)=alm2eph(27,000,0.2174186707E-001,319488.0000,0.9821335963,-0.7531742299E-008,5153.707031,0.2625158322E+001,-1.095356284,0.3105322022E+001,0.3786087036E-003,0.3637978807E-011,660);
eph(28)=alm2eph(28,000,0.1785039902E-001,319488.0000,0.9786162263,-0.7737465154E-008,5153.660156,-0.2524778080E+001,-1.828244817,-0.2137146453E+001,0.1344680786E-003,0.3637978807E-011,660);
eph(29)=alm2eph(29,000,0.2323150635E-002,319488.0000,0.9628449863,-0.8091765626E-008,5153.538574,-0.1482118306E+001,-1.161227201,0.9249274979E-001,0.3042221069E-003,0.3637978807E-011,660);
eph(30)=alm2eph(30,000,0.1097297668E-001,319488.0000,0.9595912692,-0.7908900866E-008,5153.588867,-0.2673797423E+001,1.557179251,-0.2834284919E+001,-0.1373291016E-003,-0.1818989404E-010,660);
eph(31)=alm2eph(31,000,0.7861614227E-002,319488.0000,0.9810130713,-0.7566029441E-008,5153.592285,0.2680669252E+001,-0.868619243,0.7378893253E+000,0.2326965332E-003,0.3637978807E-011,660);
eph(32)=alm2eph(32,000,0.1181650162E-001,319488.0000,0.9522149788,-0.8160339911E-008,5153.648438,0.6558501902E+000,-0.590281500,0.1336976234E+001,-0.4339218140E-003,-0.3637978807E-011,660);
[x y z]=llh2xyz(40.7127,74.0059,6.4e3);
userxyz=[x y z];
obsTime=[471000:0.001:471006+90];
settings=initSettings();
speedOfLight=299792458;
lengthOfChips=speedOfLight/1.023e6;
validPRN=[];
PRNlist=[9 12 15 17 26 27];
idxTTime=1;
hwb=waitbar(0,'Please wait');
distByChips=zeros(length(obsTime),length(PRNlist));
for transmitTime=obsTime
waitbar((transmitTime-obsTime(1))/(obsTime(end)-obsTime(1)),hwb);
validPRN=[];
for PRN=PRNlist;
if PRN==24
continue;
end;
[satPosition, satClkCorr] = satpos(transmitTime, ...
PRN, ...
eph, settings);
[az, el, tmpDist] = topocent(userxyz', satPosition - userxyz');
dist=tmpDist-satClkCorr*speedOfLight;
distByChips(idxTTime,PRN)=dist/lengthOfChips;
if (el>=30)&& (el<=90)
validPRN=[validPRN PRN];
end;
end;
idxTTime=idxTTime+1;
validPRN=validPRN(1:end);
%plot(dist(validPRN),'o');
end;
startOffset=68.802;
InitCodePhase=distByChips(:,validPRN);
save InitCodePhase.mat InitCodePhase
close(hwb);
msgbox('Finish');