SoftGNSS/GNSS_SDR_IQ/test/test_nav_file.m

56 lines
2.3 KiB
Mathematica
Raw Normal View History

2025-10-22 16:08:12 +07:00
%Gen ephemeris message for every satellite
%function InitCodePhase=GenerateSatellitesPseudoranges(InitObsTime,DurationTime,LLH,PRNlist,ElevationMask)
clear workspace
addpath ..\include % The software receiver functions
addpath ..\geoFunctions % Position calculation related functions
addpath ..
load trackingResults_HN.mat
%fidASCII=fopen('..\..\..\works\EstimatingCN0\GNSS_SIM\NAV3\nav_test','rt');
fidASCII=fopen('..\..\..\works\EstimatingCN0\GNSS_SIM\Ephemeris\nav02','rt');
%fidASCII=fopen('..\..\..\works\EstimatingCN0\GNSS_SIM\NAV3\navascii2','rt');
data=fread(fidASCII,'char')-48;
data(data==0)=-1;
data=data(532:end)';
clear trackResults;
trackResults(1).I_P=kron(data,ones(1,20));
%trackResults(1).I_P=trackResults(1).I_P(15000*20:end);
trackResults(2:end)=[];
trackResults(1).status='T';
[subFrameStart, activeChnList] = findPreambles2(trackResults, settings);
LLH=[21.004498873852768 105.8435979060256 50.956094086170197];
PRNlist=[3 6 13 16 19 23];
ElevationMask=10;
for channelNr = activeChnList
%=== Convert tracking output to navigation bits =======================
%--- Copy 5 sub-frames long record from tracking output ---------------
navBitsSamples = trackResults(channelNr).I_P(subFrameStart(channelNr) - 20 : ...
subFrameStart(channelNr) + (1500 * 20) -1)';
%--- Group every 20 vales of bits into columns ------------------------
navBitsSamples = reshape(navBitsSamples, ...
20, (size(navBitsSamples, 1) / 20));
%--- Sum all samples in the bits to get the best estimate -------------
navBits = sum(navBitsSamples);
%--- Now threshold and make 1 and 0 -----------------------------------
% The expression (navBits > 0) returns an array with elements set to 1
% if the condition is met and set to 0 if it is not met.
navBits = (navBits > 0);
%--- Convert from decimal to binary -----------------------------------
% The function ephemeris expects input in binary form. In Matlab it is
% a string array containing only "0" and "1" characters.
navBitsBin = dec2bin(navBits);
%=== Decode ephemerides and TOW of the first sub-frame ================
[eph(trackResults(channelNr).PRN), TOW] = ...
ephemeris(navBitsBin(2:1501)', navBitsBin(1));
end