GMSK信號調製

GMSK爲MSK+高斯濾波器:
其中高斯濾波器的響應:

MSK信號表示:

close all;clear;
Tpulse=20e-6;%脈衝寬度
Fs=25e6;%採樣頻率
Ts=1/Fs;%採樣週期
S=floor(Tpulse/Ts);%一個脈衝內的採樣點數
r=5;%過採樣
S=S/r;%每r個點代表一個碼元,相當於在一個脈衝內的碼元數
data=randsrc(S,1);%隨機產生S個+1、-1

BT=0.3;
Tb=Ts*r;%Ts爲採樣時間,Tb脈衝寬度,一個脈衝寬度內有r個點

%GMSK的高斯噪聲長度爲21
PTV=-2*Tb:Ts:2*Tb;

sigma=sqrt(log(2))/(2*pi*BT);
gauss=(1/(sqrt(2*pi)*sigma*Tb))*exp((-PTV.^2)/(2*sigma^2*Tb^2));

%矩形脈衝產生,長度爲6
RTV=-Tb/2:Ts:Tb/2;
rect=(1/2*Tb)*ones(size(RTV));

%脈衝數據與高斯濾波器的卷積求脈衝響應,長度:21+6-1
G_TEMP=conv(gauss,rect);

%因爲脈衝響應的範圍是負無窮到正無窮,非因果
%|t|>2T區間值幾乎爲0,所以將-2T搬移到正半軸上
%由於每個符號長度爲5而脈衝響應有值部分僅在5-20之間,因此階段爲3*Tb的長度即可
G=G_TEMP(r+1:4*r); %保留下6-20之間的值

%因爲頻率脈衝函數再整個區間的積分要爲0.5;polyarea((1:15),G)= 3.3767e+14
%所以進行規範化, polyarea((1:15),G_FUN)=0.4768
G_FUN=(G-G(1))./(2*sum(G-G(1)));

%累計求和函數a(3)=b(1)+b(2)+b(3)
%積分
Q_FUN=cumsum(G_FUN); 

h=0.5;%調製係數 MSK爲0.5

%KT-(K+1)T的附加相位,5個點表示一個相位
phi(1:r)=2*pi*h*data(1).*Q_FUN(1:r);
phi(1+r:2*r)=2*pi*h*data(2).*Q_FUN(1:r)+2*pi*h*data(1).*Q_FUN(1+r:2*r);
phi(1+2*r:3*r)=2*pi*h*data(3).*Q_FUN(1:r)+2*pi*h*data(2).*Q_FUN(1+r:2*r)+...
    2*pi*h*data(1).*Q_FUN(1+2*r:3*r);
for i=4:length(data)
    phi(1+(i-1)*r:i*r)=2*pi*h*data(i).*Q_FUN(1:r)+2*pi*h*data(i-1).*Q_FUN(1+r:2*r)+...
        2*pi*h*data(i-2).*Q_FUN(1+2*r:3*r)+pi*h*sum(data(1:i-3));
end

phi=transpose(phi);%變爲行向量
GMSK_PHASE=exp(1i.*phi);%相位
GMSK_signal=exp(1i*(2*pi*0.1*(1:length(phi))'+phi));%GMSK信號
GMSK_FFT=abs(fft(GMSK_signal));%頻譜
GMSK_FFT = mapminmax(GMSK_FFT', 0, 1); %歸一化函數
GMSK_Square_Spectrum=abs(fft(GMSK_signal.^2));%平方譜
GMSK_Square_Spectrum = mapminmax(GMSK_Square_Spectrum', 0, 1); %歸一化函數
plot(GMSK_Square_Spectrum);title('GMSK平方譜');


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章