matlab中for创建矩阵,每次for循环⽣成⼀个固定⾏列的矩阵,
把每次矩阵存到。......
for loopCnt =  1:codePeriods
%% GUI update -------------------------------------------------------------
% The GUI is updated every 50ms. This way Matlab GUI is still
% responsive enough. At the same time Matlab is not occupied
% all the time with GUI task.
Ln=sprintf('\n');
trackingStatus=['Tracking: Ch ', int2str(channelNr), ...
' of ', int2str(settings.numberOfChannels),Ln ...
'PRN: ', int2str(channel(channelNr).PRN),Ln ...
'Completed ',int2str(loopCnt), ...
' of ', int2str(codePeriods), ' msec',Ln...
'C/No: ',CNo,' (dB-Hz)'];
if (rem(loopCnt, 50) == 0)
try
waitbar(loopCnt/codePeriods, ...
hwb, ...
trackingStatus);
catch
% The progress bar was closed. It is used as a signal
% to stop, "cancel" processing. Exit.
disp('Progress bar closed, ');
return
end
end
%% Read next block of data ------------------------------------------------
% Find the size of a "block" or code period in whole samples
% Update the phasestep based on code freq (variable) and魏晨 洪辰
% sampling frequency (fixed)
codePhaseStep = codeFreq / settings.samplingFreq;                %%%  settings.samplingFreq      =
5.714e6;  %[Hz]
blksize = ceil((deLength-remCodePhase) / codePhaseStep);  %%%deLength
= 1023;  remCodePhase  = 0.0;                            %%%初始码移位为0
= 1023;  remCodePhase  = 0.0;                            %%%初始码移位为0
% Read in the appropriate number of samples to process this
% interation
[rawSignal, samplesRead] = fread(fid, blksize, settings.dataType);  %%%  settings.dataType
='int8';
%% for bupt if data
rawSignal =rawSignal.';
%rawSignal=(rawSignal<0); %负数取1,正数取0
% If did not read in enough samples, then could be out of
% data - better exit
if (samplesRead ~= blksize)
disp('Not able to read the specified number of samples  for tracking, exiting!')
fclose(fid);
return
end
%% Set up all the code phase tracking information -------------------------
% Define index into early code vector
tcode    = (remCodePhase-earlyLateSpc/2) :...
阿sa 郑中基codePhaseStep:...
((blksize-1)*codePhaseStep+remCodePhase-earlyLateSpc/2);
tcode2      = mod(ceil(tcode),1023)+1;
earlyCode11  = caCode11(tcode2);    %早早早码3
tcode    = (remCodePhase-earlyLateSpc/2) :...
codePhaseStep:...
((blksize-1)*codePhaseStep+remCodePhase-earlyLateSpc/2);
tcode2      = mod(ceil(tcode),1023)+1;
earlyCode10  = caCode10(tcode2);    %早2
tcode      = (remCodePhase-earlyLateSpc/2) : ...%remCodePhase=0,earlyLateSpc=0.1 codePhaseStep : ...%codePhaseStep=码频率/采样频率=每个采样点有多少个码⽚
((blksize-1)*codePhaseStep+remCodePhase-earlyLateSpc/2);% blksize=ceil((deLength-remCodePhase) / codePhaseStep);
tcode2      = ceil(tcode) + 1;%%tcode2=0+1:1023/5714:1022.1+1,,,,,ceil:⽐它⼤的最⼩整数,如ceil(-1.9)=-1
earlyCode  = caCode(tcode2);%早1
% Define index into late code vector超前
tcode      = (remCodePhase+earlyLateSpc/2) : ...
codePhaseStep : ...
((blksize-1)*codePhaseStep+remCodePhase+earlyLateSpc/2);
tcode2      = ceil(tcode) + 1;
lateCode    = caCode(tcode2);%晚1
tcode      = (remCodePhase+earlyLateSpc/2+0.5) : ...
codePhaseStep : ...
((blksize-1)*codePhaseStep+remCodePhase+earlyLateSpc/2+0.5);
tcode2      = ceil(tcode) + 1;
龙俊亨和具荷拉接吻lateCode10    = caCode20(tcode2);  %晚2
tcode      = (remCodePhase+earlyLateSpc/2+1) : ...
codePhaseStep : ...
((blksize-1)*codePhaseStep+remCodePhase+earlyLateSpc/2+1);
tcode2      = ceil(tcode) + 1;
lateCode11    = caCode21(tcode2);  %晚3
% Define index into prompt code vector
tcode      = remCodePhase : ...
codePhaseStep : ...
((blksize-1)*codePhaseStep+remCodePhase);
tcode2      = ceil(tcode) + 1;
promptCode  = caCode(tcode2);
remCodePhase = (tcode(blksize) + codePhaseStep) - 1023.0;%%当前采样点处的码⽚+每个采样点多少个码⽚-
1023
%% Generate the carrier frequency to mix the signal to baseband -----------
time    = (0:blksize) ./ settings.samplingFreq;
% Get the argument to sin/cos functions
trigarg = ((carrFreq * 2.0 * pi) .* time) + remCarrPhase;
remCarrPhase = rem(trigarg(blksize+1), (2 * pi));
% Finally compute the signal to mix the collected data to bandband
carrCos = fix(7*cos(trigarg(1:blksize)));
carrSin = fix(7*sin(trigarg(1:blksize)));
%% Generate the six standard accumulated values ---------------------------
%%%%%%%%%%-----------加的------------%%%%%%%%%%%%%%%%%%
Num=ceil(settings.deLength/deLength);%%采样率为25兆赫兹,也就
是每个码⽚有25个采样点。每个码⽚多少个采样点
Scurvec=((xcorr(real(rawSignal(1:settings.samplingFreq*0.001)),earlyCode,Num*1)).^2-(xcorr(real (rawSignal(1:settings.samplingFreq*0.001)),lateCode,Num*1)).^2)/blksize/blksize;%%S曲线
Scurve=Scurvec;%%1*51的矩阵
Scurve1=[Scurve;Scurve1];%矩阵合成
%        Scurvec1=Scurvec';%
%%%%%%%%%%-----------加的------------%%%%%%%%%%%%%%%%%%
% First mix to baseband
qBasebandSignal = carrCos .* rawSignal;
iBasebandSignal = carrSin .* rawSignal;
%            % Now get early, late, and prompt values for each
%            I_E = sum(earlyCode  .* iBasebandSignal);
%            Q_E = sum(earlyCode  .* qBasebandSignal);
%            I_P = sum(promptCode .* iBasebandSignal);风车 一青窈
%            Q_P = sum(promptCode .* qBasebandSignal);
%            I_L = sum(lateCode  .* iBasebandSignal);
%            Q_L = sum(lateCode  .* qBasebandSignal);
%
% Now get early, late, and prompt values for each
I_E = sum(earlyCode  .* iBasebandSignal);
Q_E = sum(earlyCode  .* qBasebandSignal);%早码1
I_E10 = sum(earlyCode10  .* iBasebandSignal);
Q_E10 = sum(earlyCode10  .* qBasebandSignal);%早码2
I_E11 = sum(earlyCode11  .* iBasebandSignal);
Q_E11 = sum(earlyCode11  .* qBasebandSignal);%早码3
I_P = sum(promptCode .* iBasebandSignal);
Q_P = sum(promptCode .* qBasebandSignal);
I_L = sum(lateCode  .* iBasebandSignal);%晚码1
Q_L = sum(lateCode  .* qBasebandSignal);
I_L10 = sum(lateCode10  .* iBasebandSignal);%晚码2
Q_L10 = sum(lateCode10  .* qBasebandSignal);
I_L11 = sum(lateCode11  .* iBasebandSignal);%晚码3
Q_L11 = sum(lateCode11  .* qBasebandSignal);
%% Find PLL error and update carrier NCO ----------------------------------
% Implement carrier loop discriminator (phase detector)
carrError = atan(Q_P / I_P) / (2.0 * pi);%鉴相因⼦,通过它来查看相关结果是否最⼤%liruiqin % Implement carrier loop filter and generate NCO command
carrNco = oldCarrNco + (tau2carr/tau1carr) * ...
(carrError - oldCarrError) + carrError * (PDIcarr/tau1carr);
键盘钢琴琴谱
oldCarrNco  = carrNco;
oldCarrError = carrError;
% Modify carrier freq based on NCO command
carrFreq = carrFreqBasis + carrNco;
trackResults(channelNr).carrFreq(loopCnt) = carrFreq;
%% Find DLL error and update code NCO -------------------------------------
codeError = (sqrt(I_E * I_E + Q_E * Q_E) - sqrt(I_L * I_L + Q_L * Q_L)) / ...
(sqrt(I_E * I_E + Q_E * Q_E) + sqrt(I_L * I_L + Q_L * Q_L));
% Implement code loop filter and generate NCO command
codeNco = oldCodeNco + (tau2code/tau1code) * ...
(codeError - oldCodeError) + codeError * (PDIcode/tau1code);
oldCodeNco  = codeNco;
oldCodeError = codeError;
% Modify code freq based on NCO command
codeFreq = deFreqBasis - codeNco;
trackResults(channelNr).codeFreq(loopCnt) = codeFreq;
%% Record various measures to show in postprocessing ----------------------
% Record sample number (based on 8bit samples)
trackResults(channelNr).absoluteSample(loopCnt) = ftell(fid);
trackResults(channelNr).dllDiscr(loopCnt)      = codeError;
trackResults(channelNr).dllDiscrFilt(loopCnt)  = codeNco;
trackResults(channelNr).pllDiscr(loopCnt)      = carrError;
trackResults(channelNr).pllDiscrFilt(loopCnt)  = carrNco;
trackResults(channelNr).I_E(loopCnt) = I_E;
trackResults(channelNr).I_P(loopCnt) = I_P;
黄玠trackResults(channelNr).I_L(loopCnt) = I_L;
trackResults(channelNr).Q_E(loopCnt) = Q_E;
trackResults(channelNr).Q_P(loopCnt) = Q_P;
trackResults(channelNr).Q_L(loopCnt) = Q_L;