?? gmsk_2dd_c.m
字號:
%GMSK調(diào)制,二比特差分解調(diào)
clear all
close all
%--------------------------------------------------------------------------
%參數(shù)設(shè)置
data_len = 30000; %碼元個(gè)數(shù)
sample_number = 8; %采樣個(gè)數(shù)
Rb = 24000; %碼元速率
fc = 96000; %載波頻率
alpha = 0.25; %BbTb值
%**************************************************************************
%--------------------------------------------------------------------------
%隨機(jī)產(chǎn)生傳輸信號
data = rand_binary(data_len);
%**************************************************************************
%--------------------------------------------------------------------------
%差分編碼
data_diff = difference(data);
%**************************************************************************
%--------------------------------------------------------------------------
%參數(shù)設(shè)置
[signal_out,I_out,Q_out,phase,gt,qt] = mod_gmsk(data_diff,data_len,sample_number,Rb,alpha);
%**************************************************************************
%--------------------------------------------------------------------------
%中頻搬移
multi = fc/Rb;
I_temp=interp(I_out,multi);
Q_temp=interp(Q_out,multi);
Fs=fc*sample_number;
t=1/Fs:1/Fs:length(I_temp)*1/Fs;
signal_i=I_temp.*cos(2*pi*fc*t);
signal_q=Q_temp.*sin(2*pi*fc*t);
signal_mod_i=I_temp.*cos(2*pi*fc*t)-Q_temp.*sin(2*pi*fc*t);
signal_mod_q=I_temp.*sin(2*pi*fc*t)+Q_temp.*cos(2*pi*fc*t);
%**************************************************************************
%--------------------------------------------------------------------------
%加噪聲
for SNR = 0:16
% signal_mod1 = awgn(signal_mod_i+j*signal_mod_q,SNR);
noise=randn(1,length(signal_mod_i));
b=0.2;c=0.22;d=0.28;e=0.3;
F1=[0,b,c,d,e,1];
A1=[0,0,1,1,0,0];
bpf=firls(300,F1,A1);
noise1=conv(noise,bpf);
noise_out=noise1(150+1:150+length(signal_mod_i));
Power_noise=sum(noise_out.^2);
Power_signal_i=sum(signal_mod_i.^2);
Power_signal_q=sum(signal_mod_q.^2);
Coe_SNR_i=sqrt(1*Power_signal_i/Power_noise/(10^(SNR/10)));
Coe_SNR_q=sqrt(1*Power_signal_q/Power_noise/(10^(SNR/10)));
signal_mod1 = (signal_mod_i+(Coe_SNR_i)*noise_out) + j * (signal_mod_q+(Coe_SNR_q)*noise_out); %加入噪聲以后的信號
%--------------------------------------------------------------------------
%二比特差分
cospart = real(signal_mod1);
sinpart = imag(signal_mod1);
delay = [zeros(1,2*multi*sample_number) cospart(1:data_len*sample_number*multi-2*multi*sample_number)];
cha = -delay .* cospart;
N=300; % 濾波器的階數(shù)為(N+1)
F=[0,fc-1000,fc+1000,Fs/2]*2/Fs;
A=[1,1,0,0];
lpf=firls(N,F,A);
dem1 = conv(cha,lpf);
dem = dem1(N/2+1:N/2+length(cha));
%**************************************************************************
%--------------------------------------------------------------------------
%抽樣判決
for i = 2:data_len
demod_data(i) = dem(i*multi*sample_number)>-0.1;
end
demod_data = 2*demod_data-1;
%**************************************************************************
%--------------------------------------------------------------------------
%計(jì)算誤碼率
[num,ber(SNR+1)]=symerr(demod_data(3:data_len),data(3:data_len));
%**************************************************************************
end
%**************************************************************************
%--------------------------------------------------------------------------
%誤碼率曲線
semilogy([0:16],ber,'r*-');
%**************************************************************************
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -