資源簡介
1.在MATLAB中編寫程序實現用Costas提取載波 2.在simulink中實現用Costas提取載波

代碼片段和文件信息
%利用MATLAB實現科斯塔斯環同步法?
%假設實際發送信號的載波頻率是3.563MHz,本地初始頻率為3.5628MHz?
%利用科斯塔斯環法實現載波同步,使最后獲得的載波頻率趨近于實際發送信號的載波頻率。
fs=12e6;????????????????????%采樣頻率?
ts=1/fs;?
num=2.56e6;?????????????????%數據長度?
SNR=-15;?
real_fc=3563000;????????????%實信號頻率?
data=sin(2*pi*real_fc*(0:num-1)*ts+pi/4)+sqrt(10^(SNR/10))*randn(1num);???%輸入信號?
fc=3562800;?????????????????%本地頻率?
?
n=fs/1000;??????????????????%積累時間為1ms?
nn=[0:n-1];?
nf=floor(length(data)/n);???%將輸入數據分成1ms的多個數據塊?
wfc=2*pi*fc;????????????????%本地信號頻率?
phi_prv=0;?
temp=0;?
fram=0;?
carrier_phase=0;?
phase=0;?
?
%環路濾波器的參數?
c1=153;%153.7130;?
c2=16;%6.1498;?
?
for?frame=1:nf?
????%產生本地的sin和cos函數?
????expcol=exp(j*(wfc*ts*nn+phase));?
????sine=imag(expcol);?
????cosine=real(expcol);?
?????
????x=data((1:n)+((frame-1)*n));?
????%將數據轉換到基帶?
????x_sine=x.*sine;?
????x_cosine=x.*cosine;?
?????
????Q=sum(x_sine);????????????????????????%經過濾波器?
????I=sum(x_cosine);?
????phase_discri(frame)=atan(Q/I);????????%得到鎖相環的輸入?
?????
????%鎖相環?
????dfrq=c1*phase_discri(frame)+temp;?????%經過環路濾波器?
????temp=temp+c2*phase_discri(frame);?
????wfc=wfc-dfrq*2*pi;????????????????????%改變本地頻率?
????dfrq_frame(frame)=wfc;?
????phase=wfc*ts*n+phase;?????????????????%得到不同塊的相位?
????phase_frame(frame)=phase;?
end?
plot(dfrq_frame/(2*pi));?
hold?on?
plot([1:length(dfrq_frame)]real_fc‘r‘);?
legend(‘鎖相環跟蹤‘‘實際的載波頻率‘);?
grid?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1583??2010-05-17?10:09??Costas提取載波\Costas.m
?????文件??????36351??2010-05-17?22:35??Costas提取載波\costas.mdl
?????目錄??????????0??2010-07-25?21:48??Costas提取載波
-----------?---------??----------?-----??----
????????????????37934????????????????????3
評論
共有 條評論