⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmsk_1df_c.m

📁 本程序为通信系统中的GMSK调制程序
💻 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;                                              % 滤波器的阶数为(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*-');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -