• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签: GPS  捕获  跟踪  

资源简介

关于GPS信号如何产生、如何捕获、如何追踪的所有matlab程序大集合!

资源截图

代码片段和文件信息

function [correlation codePhase]= acquisition(datachipratesamplingFreqIFsamplesPerCode)


% performs a circular convolution by using the FFT and IFFT .
% Generate CA code 
CA_code = makeCaTable(181023chipratesamplingFreq);
CA_double = [CA_code CA_code];
CA = CA_double(10001:48192);
% time vector/矢量,向量
t = (0:(samplesPerCode-1))/samplingFreq;
% In-phase component
I_comp = cos(2*pi*IF.*t).*data;
% quadrature component
Q_comp = sin(2*pi*IF.*t).*data;
% FFT of I and Q  comps
X = fft(I_comp + i*Q_comp);
% conj(FFT) of CA code
F_CA = conj(fft(CA));
% Multiply in freq domain and perform IFFT
% then get the squared magnitude
correlation = abs(ifft(X.*F_CA)).^2;

settings.acqThreshold       = 2.5;
%% Look for correlation peaks in the results ==============================
    % Find the highest peak and compare it to the second highest peak
    % The second peak is chosen not closer than 1 chip to the highest peak
    
    %--- Find code phase of the same correlation peak ---------------------
    [peakSize codePhase] = max(correlation);

    %--- Find 1 chip wide C/A code phase exclude range around the peak ----
    samplesPerCodeChip   = round(samplingFreq / chiprate);%38
    excludeRangeIndex1 = codePhase - samplesPerCodeChip;
    excludeRangeIndex2 = codePhase + samplesPerCodeChip;

    %--- Correct C/A code phase exclude range if the range includes array
    %boundaries
    if excludeRangeIndex1 < 2
        codePhaseRange = excludeRangeIndex2 : ...
                         (samplesPerCode + excludeRangeIndex1);
                   %samplesPerCode是38192,不要与samplesPerCodeChip混了,
                   %这排除了不可能的码区间  
    elseif excludeRangeIndex2 >= samplesPerCode
        codePhaseRange = (excludeRangeIndex2 - samplesPerCode) : ...
                         excludeRangeIndex1;
    else
        codePhaseRange = [1:excludeRangeIndex1 ...
                          excludeRangeIndex2 : samplesPerCode];
    end

    %--- Find the second highest correlation peak in the same freq. bin ---
    secondPeakSize = max(correlation( codePhaseRange));
%注意这个是codePhaseRange,在相位区间之外
    %--- Store result -----------------------------------------------------
    acqResults.peakMetric = peakSize/secondPeakSize;
    
    % If the result is above threshold then there is a signal ...
    if (peakSize/secondPeakSize) > settings.acqThreshold
        fprintf(‘捕获成功‘)
      
    else
        fprintf(‘捕获失败‘)
    end
   
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2543  2012-12-22 09:42  tracking_30\acquisition.m

     文件       2347  2011-05-23 19:26  tracking_30\cacode.m

     文件        503  2011-05-23 19:21  tracking_30\calcLoopCoef.m

     文件       1219  2013-03-25 10:30  tracking_30\main.m

     文件       1805  2012-12-22 20:14  tracking_30\makeCaTable.m

     文件       6804  2011-05-24 09:36  tracking_30\test.m

     文件       6787  2011-05-31 15:53  tracking_30\tracking.m

     目录          0  2018-11-13 22:30  tracking_30

----------- ---------  ---------- -----  ----

                22008                    8


评论

共有 条评论