資源簡介
gps信號捕獲程序,matlab仿真FFT+PMF
代碼片段和文件信息
samplesPerCode?=?round(settings.samplingFreq?/?...
????????????????????????(settings.codeFreqBasis?/?settings.codeLength));
%?Create?two?1msec?vectors?of?data?to?correlate?with?and?one?with?zero?DC
signal1?=?longSignal(1?:?samplesPerCode);
signal2?=?longSignal(samplesPerCode+1?:?2*samplesPerCode);
%?index=ceil(samplesPerCode*(1?:?40920)/40920);
signal0DC?=?longSignal?-?mean(longSignal);?
%?Find?sampling?period
ts?=?1?/?settings.samplingFreq;
%?Find?phase?points?of?the?local?carrier?wave?
phasePoints?=?(0?:?(samplesPerCode-1))?*?2?*?pi?*?ts;
%?Number?of?the?frequency?bins?for?the?given?acquisition?band?(500Hz?steps)
numberOfFrqBins?=?round(settings.acqSearchBand?*?2)?+?1;
%?Generate?all?C/A?codes?and?sample?them?according?to?the?sampling?freq.
%---?Initialize?arrays?to?speed?up?the?code?-------------------------------
%?Search?results?of?all?frequency?bins?and?code?shifts?(for?one?satellite)
results?????=?zeros(numberOfFrqBins?2046);
%?Carrier?frequencies?of?the?frequency?bins
frqBins?????=?zeros(1?numberOfFrqBins);
%---?Initialize?acqResults?------------------------------------------------
%?Carrier?frequencies?of?detected?signals
acqResults.carrFreq?????=?zeros(1?32);
%?C/A?code?phases?of?detected?signals
acqResults.codePhase????=?zeros(1?32);
%?Correlation?peak?ratios?of?the?detected?signals
acqResults.peakMetric???=?zeros(1?32);
IQ1_add=zeros(11023*2);
IQ2_add=zeros(11023*2);
fprintf(‘(‘);
%?Perform?search?for?all?listed?PRN?numbers?...
for?PRN?=?settings.acqSatelliteList
%%?Correlate?signals?======================================================???
????%---?Perform?DFT?of?C/A?code?------------------------------------------
????caCodes=generateCAcode(PRN);
????caCodes1=kron(caCodesones(12));
%?????caCodes2=[caCodes1?0?0];
????caCodeFreqDom?=?conj(fft(caCodes1));
????%---?Make?the?correlation?for?whole?frequency?band?(for?all?freq.?bins)
????for?frqBinIndex?=?1:numberOfFrqBins
????????%---?Generate?carrier?wave?frequency?grid?(0.5kHz?step)?-----------
????????frqBins(frqBinIndex)?=?settings.IF?-?...
???????????????????????????????(settings.acqSearchBand/2)?*?1000?+?...
???????????????????????????????0.5e3?*?(frqBinIndex?-?1);
????????%---?Generate?local?sine?and?cosine?-------------------------------
????????sinCarr?=?sin(frqBins(frqBinIndex)?*?phasePoints);
????????cosCarr?=?cos(frqBins(frqBinIndex)?*?phasePoints);
????????%---?“Remove?carrier“?from?the?signal?-----------------------------
????????I1??????=?sinCarr?.*?signal1;
????????Q1??????=?cosCarr?.*?signal1;
????????I2??????=?sinCarr?.*?signal2;
????????Q2??????=?cosCarr?.*?signal2;
????????IQ1=I1?+?j*Q1;
????????IQ2=I2?+?j*Q2;
%?????????IQ11=IQ1(:index);
%?????????IQ22=IQ2(:index);
????????for?i=1:1023*2
????????????IQ1_add(i)=sum(IQ1((i-1)*8+1:8*i));
????????????IQ2_add(i)=sum(IQ2((i-1)*8+1:8*i));
????????end
????????%---?Convert?the?baseband?signal?to?frequency?domain?--------------
- 上一篇:電壓型逆變器雙閉環仿真
- 下一篇:空氣參數計算器
評論
共有 條評論