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

📄 gmsk_1dd_c_pp.m

📁 gmsk的源代码
💻 M
字号:
%GMSK调制,一比特差分解调
clear all
close all

%--------------------------------------------------------------------------
%参数设置
data_len = 30000;          %码元个数
sample_number = 8;          %采样个数
Rb = 24000;                 %码元速率
fc = 96000;                 %载波频率
alpha = 0.25;               %BbTb值
%**************************************************************************

%--------------------------------------------------------------------------
%随机产生传输信号
data = rand_binary(data_len);
%**************************************************************************

%--------------------------------------------------------------------------
%GMSK基带调制
[signal_out,I_out,Q_out,phase,gt,qt] = mod_gmsk(data,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);
%**************************************************************************

fc = fc+500;

%--------------------------------------------------------------------------
%加噪声
for SNR = 0:20
% signal_mod1 = awgn(signal_mod_i+j*signal_mod_q,SNR);

noise=randn(1,length(signal_mod_i));
mid = 2*fc/Fs;
b=mid-0.05;c=mid-0.03;d=mid+0.03;e=mid+0.05;
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);    %加入噪声以后的信号

fs = fc*sample_number;
t=1/fs:1/fs:length(I_temp)*1/fs;

    %--------------------------------------------------------------------------
    %一比特延迟差分
    cospart = real(signal_mod1);
    sinpart = imag(signal_mod1);
    
    delay = [zeros(1,multi*sample_number) sinpart(1:data_len*sample_number*multi-multi*sample_number)];
    cha = -delay .* cospart;
    
    N=300;                                              % 滤波器的阶数为(N+1)  
    F=[0,fc,fc,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 = 1:data_len
        demod_data(i) = dem(i*multi*sample_number)>0;
    end
    demod_data = 2*demod_data-1;
    %**************************************************************************
        
    %--------------------------------------------------------------------------
    %计算误码率
    [num,ber(SNR+1)]=symerr(demod_data(2:data_len),data(2:data_len));
    %**************************************************************************
end
%**************************************************************************

%--------------------------------------------------------------------------
%误码率曲线
semilogy([0:20],ber,'r*-');
%**************************************************************************

⌨️ 快捷键说明

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