資源簡介
直序擴頻信號捕獲算法的matlab代碼 算法:基于FFT的頻率并行捕獲算法

代碼片段和文件信息
%%?本代碼對直擴信號的捕獲(基于FFT的碼并行算法)進行仿真
clear?all;
clc;
%%?信號時間,采樣時間設置
time=1e-4;?%取0.1ms時間內的信號
fs=102.3e6;
Ts=1/fs;%每隔Ts時間采樣一個點,總采樣點數為:t/Ts
%%?產生信息碼元
Ra=10e3;%信息碼元速率10KHz
Ta=1/Ra;%每bit信息碼元占用的時間
%?code_length=20;%信息碼元個數
code_length=time*Ra;%信息碼元個數
N=1:code_length;
rand(‘seed‘0);
x=sign(rand(1code_length)-0.5);%信息碼,正負1
for?i=1:code_length?
????s(1+(i-1)*fs/Ra:i*fs/Ra)=x(i);%每個信息碼元內含有fs/Ra個采樣點
end
figure(1)
plot(s)
axis([0?length(s)?-1.5?1.5])
title(‘信息碼元‘)
%%?產生偽隨機碼?調用mgen函數
Rc=10.23e6;%偽碼頻率10.23MHz
PN_order?=?10;%PN碼的本原多項式階數?PN碼周期=2^n-1
PN_shift?=?500;%?發送端和接收端PN碼偏移為PN_shift個chip
PN_length=code_length*Rc/Ra;%偽碼頻率10.23MHz,每個信息碼內含有Rc/Ra=1023個偽碼
x_code=sign(mgen(PN_order6PN_length+PN_shift)-0.5);%把01碼變換成-11調制碼
Rx_Local_xcode=x_code(1+PN_shift:PN_length+PN_shift);?%接收端c(t)
Tx_xcode=x_code(1:PN_length);%發送端經過時延到達的是c(t-τ)接收端相對發送端超前,所以代碼上讓接收端本地PN碼比發送端向前偏移
%?y?=?(Rx_xcode(1:PN_length-PN_shift)==Tx_xcode(1+PN_shift:PN_length))
for?i=1:PN_length?%產生接收端?不加碼偏移的PN碼,取1:PN_length的x_code采樣
????PN_RxLocalcode(1+(i-1)*fs/Rc:i*fs/Rc)=Rx_Local_xcode(i);%每個偽碼碼元內含有fs/Rc個采樣點,采樣頻率fs=102.3MHz
end
for?i=1:PN_length%產生發送端?加上碼偏移的PN碼
????PN_Txcode(1+(i-1)*fs/Rc:i*fs/Rc)=Tx_xcode(i);%每個偽碼碼元內含有10個采樣點,采樣頻率fs=102.3MHz
end
figure(2)
subplot(121)
plot(PN_Txcode)
axis([0?length(PN_Txcode)?-1.5?1.5])
title(‘發送端PN碼‘)
subplot(122)
plot(PN_RxLocalcode)
axis([0?length(PN_RxLocalcode)?-1.5?1.5])
title(‘接收端本地PN碼‘)
%%?擴頻
k_code=s.*PN_Txcode;
figure(3)
plot(k_code)
axis([0?length(k_code)?-1.5?1.5])
title(‘擴頻信號‘)
%%?調制
f0=40e6;?fd=10e3;
AI=2;
dt=fs/f0;
t=0:Ts:time-Ts;%一個載波周期內采樣點
cI=AI*cos(2*pi*(f0+fd)*t);?%BPSK調制
signal=k_code.*cI;
figure(4)
%?plot(cI(1:400))
plot(signal)
axis([0?length(signal)?-2.5?2.5])
title(‘BPSK調制后的波形‘)
%%信道(awgn)
SNR?=?-20;%dB
signal_Receive?=?awgn(signalSNR);
fd?=?10e3;%多普勒頻偏定為10KHz
R_2D?=?[];%存放?頻帶*碼帶的二維自相關結果
fd_axis=[];?%生成二維坐標對應值
for?fd_guess?=?-10e4:fd/10:10e4?%以fd/10=1KHz為頻率搜索步進,共搜索40次
????%%?解調
????A_local=1;
????c_local=A_local*cos(2*pi*(f0+fd_guess)*t);?%解調載波
????signal_jietiao=signal_Receive.*c_local;?%BPSK解調
????figure(5)
????plot(signal_jietiao(1:300))
????axis([0?300?-2.5?2.5])
????title(‘解調后的波形‘)
????%?%?%%??FFT捕獲算法之前:先降采樣,變回未采樣的原始PN碼對應的數據
????%?%?signal_DownSample?=?[];
????%?%?PN_RxLocal_DownSample=[];
????%?%?DownSample_Rate?=?length(signal_jietiao)/PN_length;
????%?%?for?i=1:length(signal_jietiao)/DownSample_Rate
????%?%?????signal_DownSamplei=signal_jietiao(1+(i-1)*DownSample_Rate);?%解調信號降采樣(有問題,解調運算之后降采樣信號的頻譜不對)
????%?%?????signal_DownSample?=?[signal_DownSample?signal_DownSamplei];
????%?%?end
????%?%?for?i=1:length(PN_RxLocalcode)/DownSample_Rate
????%?%?????PN_RxLocal_DownSamplei=PN_RxLocalcode(1+(i-1)*DownSample_Rate);%本地PN碼降采樣(沒問題,還和原始的1023chip本地Rx_PN碼一樣)
????%?%?????PN_RxLocal_DownSample?=?[PN_RxLocal_DownSample?PN_RxLocal_DownSamplei];
????%?%?end
????%?%?%%?直擴信號捕獲?fft碼并行算法(使用---降采樣--后的信號)
????%?%??signal_DownSample_FFT?=?fft(signal_D
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5461??2017-10-22?15:38??直擴FFT頻率并行捕獲代碼\DS_FFTcodeParallel.m
?????文件????????532??2017-10-27?11:20??直擴FFT頻率并行捕獲代碼\mgen.m
?????目錄??????????0??2017-12-09?17:27??直擴FFT頻率并行捕獲代碼
-----------?---------??----------?-----??----
?????????????????5993????????????????????3
- 上一篇:雷達線性調頻信號的模糊函數Matlab代碼
- 下一篇:Matlab批量處理圖片
評論
共有 條評論