?? gmsk_1df_c.m
字號:
clear all
close all
data_len = 100000;
sample_number = 8;
Rb = 24000;
fc = 96000;
alpha = 0.25;
[data_binary,data_binary1]=rand_binary(data_len);
[signal_out,I_out,Q_out,phase,gt,qt] = mod_gmsk(data_binary,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);
% signal_mod1 = signal_mod_i+j*signal_mod_q;
%--------------------------------------------------------------------------
%1DF
cospart = real(signal_mod1);
sinpart = imag(signal_mod1);
y(1:multi*sample_number) = -cospart(1:multi*sample_number) .* sin(2*pi*fc.*t(1:multi*sample_number));
N=300; % 濾波器的階數(shù)為(N+1)
F=[0,fc,fc,Fs/2]*2/Fs;
A=[1,1,0,0];
lpf=firls(N,F,A);
dem1 = conv(y,lpf);
dem(1:multi*sample_number) = dem1(N/2+1:N/2+multi*sample_number);
m1(1) = dem(multi*sample_number)>0;
demod_data(1) = 2*m1(1)-1;
for i = 2:data_len
y((i-1)*multi*sample_number+1:i*multi*sample_number) = -cospart((i-1)*multi*sample_number+1:i*multi*sample_number) .* (sinpart((i-2)*multi*sample_number+1:(i-1)*multi*sample_number) .* cos(demod_data(i-1)*18.2/180*pi) + cospart((i-2)*multi*sample_number+1:(i-1)*multi*sample_number) .* sin(demod_data(i-1)*18.2/180*pi));
dem1 = conv(lpf,y((i-1)*multi*sample_number+1:i*multi*sample_number));
dem = dem1(N/2+1:N/2+multi*sample_number);
m1(i) = dem(multi*sample_number)>0;
demod_data(i) = 2*m1(i)-1;
end
%**************************************************************************
[num,ber(SNR+1)]=symerr(demod_data,data_binary);
end
semilogy([0:16],ber,'r*-');
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -