資源簡介
基于Matlabm文件的GMSK調制解調系統仿真代碼實現的修改版本,原始代碼在文檔中,修正代碼的gmsk.m文件中
代碼片段和文件信息
%?附錄:MATLAB程序
%繪制調制波形00101010
%
clear?all;
close?all;
?
%********************?Preparation?part?************************************
%?Ts=1/16000;????????????%基帶信號周期為1/16000s即為16KHz
?
Tb=1/32000;????????????%[碼元]輸入信號周期為Ts/2=1/32000s即32KHz【奈奎斯特采樣】
BbTb=0.5;??????????????%取BbTb為0.5調制指數為0.5的二元數字頻率調制
Bb=BbTb/Tb;????????????%3dB帶寬??????????????-_-半帶寬=碼元頻率一半-_-!
Fc=32000;??????????????%載波頻率為32KHz??????-_-載波頻率=碼元頻率-_-!
Fc_sample=64;??????????%每載波采樣64個點
B_num=8;???????????????%基帶信號為8個碼元
Dt=1/(Fc*Fc_sample);???%采樣間隔[載波周期/采樣點數][4.88281250000000e-07]
B_sample=Tb/Dt;????????%每基帶碼元采樣點數?B_sample=Tb/Dt[輸入信號/采樣間隔]
t=0:Dt:B_num*Tb-Dt;????%仿真時間離散點[采樣間隔,碼元數*(時間/碼元)]
T=Dt*length(t);????????%仿真時間值[采樣間隔*512個采樣點]
Ak=[0?0?0?0?0?0?0?0];????????%產生8個基帶信號[8個比特]
Ak=2*Ak-1;????%[多此一舉]????%單極性碼元—>雙極性碼元
gt=ones(1B_sample);?????????%每碼元對應的載波信號[1*64]
Akk=sigexpand(AkB_sample);??%碼元擴展[64*8->1*512]
temp=conv(Akkgt);???????????%碼元擴展[卷積向量Akk和gt?512+64-1]
Akk=temp(1:length(Akk));?????%碼元擴展[取出temp變量中前512個,類似于銀行存款,第一年存入的錢會一直享受利息值最后一年,第二年存入的錢會一直享受利息值最后一年]
?
%*************************?Filter?initialization?**************************
?
tt=-2.5*Tb:Dt:2.5*Tb-Dt;???%{2.5*碼元周期}/{采樣間隔=[載波周期/采樣點數]}
%g(t)=Q[2*pi*Bb*(t-Tb/2)/sqrt(log(2))]-Q[2*pi*Bb*(t+Tb/2)/sqrt(log(2))];
%Q(t)=erfc(t/sqrt(2))/2;
gaussf=erfc(2*pi*Bb*(tt-Tb/2)/sqrt(log(2))/sqrt(2))/2-erfc(2*pi*Bb*(tt+Tb/2)/sqrt(log(2))/sqrt(2))/2;?
%the?complementary?error?function?erfc(X)?is?defined?as
%erfc=2/sqrt(pi)int_{x}^{+\infty}exp{-t^2}dt
J_g=zeros(1length(gaussf));?%使J_g?的長度和Gaussf的一樣
%************************?SUM?GMSK?****************************************
?
for?i=1:length(gaussf)??%320個點
????if?i==1?
????????J_g(i)=gaussf(i)*Dt;??????????%若不乘以Dt則最后結果要出錯?
????else
????????J_g(i)=J_g(i-1)+gaussf(i)*Dt;?%若不乘以Dt則最后結果要出錯?
????end;
end;
?
J_g=J_g/2/Tb;????%若先前循環不乘以Dt則最后結果要出錯?
?
%********************?START?CALCULATION?***********************************
?
%計算相位Alpha
Alpha=zeros(1length(Akk));
k=1;??%計算第1個碼元的相位
L=0;
for?j=1:B_sample??%采樣點數為64
????J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample);??%第3碼元對應乘以J_g矢量第j[1-64]個值
????Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2;%?刷新?Alpha512?中?1-64
end;
?
k=2;%計算第2個碼元的相位
L=0;
for?j=1:B_sample%采樣點數為64
????J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample);%第3碼元對應乘以J_g矢量第j[65-128]個值
???????????????????????????????????????????????????%第4碼元對應乘以J_g矢量第j[1-64]個值
????Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2;%?刷新?Alpha512?中?65-128
end;??
?
k=3;%計算第3個碼元的相位
L=0;
for?j=1:B_sample%采樣點數為64
????J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample)+Ak(k-2)*J_g(j+4*B_sample);
?????????????????????????????????????????????????%第3碼元對應乘以J_g矢量第j[129-192]個值??
?????????????????????????????????????????????????%第4碼元對應乘以J_g矢量第j[65-128]個值
?????????????????????????????????????????????????%第5碼元對應乘以J_g矢量第j[1-64]個值
????Alpha((k-1)*B_sample+j
- 上一篇:GMSK調制解調完整流程
- 下一篇:地雜波仿真程序
評論
共有 條評論