GMSK信号调制公式与matlab代码

 

GMSK在MSK信号调制的基础上前置了一个高斯滤波器,用来缩小波束的3dB带宽。双极性bit序列经过Gauss滤波器后,波形会更加平滑,功率谱的旁瓣衰减特性会更好。算法原理框图如下所示。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaXJvbmJhdA==,size_20,color_FFFFFF,t_70,g_se,x_16

公式推导见GMSK调制解调(一)_yundanfengqing_nuc的博客-CSDN博客_gmsk调制

高斯滤波器的冲击响应matlab仿真如下:

%++++++++++++++++++++++++++++++++++++++++++++++++++++++
%	Filename:	gmsk.m
%
%	Description:	Generate baseband GMSK signal
%
% Author: Jeff Laster, MPRG, Virginia Tech 
%++++++++++++++++++++++++++++++++++++++++++++++++++++++

t0 = clock; % 当前时间

%++++++++++++++++++++++++++++++++
% 	Constant Definition
%++++++++++++++++++++++++++++++++

DRate = 1;			% data rate
M = 18;				% no. of sample per bit

%++++++++++++++++++++++++++++++++
%	Variable Definition
%++++++++++++++++++++++++++++++++

N = 12753;			% no. of bits for simulation
%EbNodB = 10;			% Eb/No (dB scale)
BT = 0.3;			% Bandwidth*Period (cannot change )

%++++++++++++++++++++++++++++++++++
% 	Program Control Variables
%++++++++++++++++++++++++++++++++++

fig_no = 1;			% initialize fig no.

%+++++++++++++++++++++++++++++++++++
%	Derived variables
%+++++++++++++++++++++++++++++++++++

T = 1/DRate;				% data period
Ts = T/M;				% sampling period ( discrete-time )
%EbNo = 10^(EbNodB/10);			% Eb/No (linear scale )

%+++++++++++++++++++++++++++++++++++++
%	Generates Input Random Data
%+++++++++++++++++++++++++++++++++++++
[data, RandData] = pn_gen(N,M); % 函数做上采样处理 等效与upsample

%dodata

%+++++++++++++++++++++++++++++++++++++
%	Generate GMSK Pulse Response
%+++++++++++++++++++++++++++++++++++++
[g,fig_no] = pulse_re(BT,T,Ts,M,fig_no);%冲击响应

%+++++++++++++++++++++++++++++++++++++++++
%	Generate Gaussian Filtered Pulses
%+++++++++++++++++++++++++++++++++++++++++
[b,delay_GF,fig_no] = gauss_pu(g,data,1,fig_no);%高斯滤波器的频率响应

%+++++++++++++++++++++++++++++++++++++++++
%	Generate GMSK signal
%+++++++++++++++++++++++++++++++++++++++++
[s,fig_no] = gmsk_sig(b,Ts,M,fig_no);

clear T DRate BT

%data=zeros(size(data));
%for i=1:N
%	for k=1:M
%		data(i*M+M/2-1+k)=Rdiff_mse(i);
%	end
%end

Time = etime(clock,t0)

function [b,delay_GF,fig_no,sim_time] = gauss_pu(g,data,plot_control,fig_no);

%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% Filename      : gauss_pu.m
%
% Function call : input =>[g,data,plot_control,figure_no]
%                 output=>[b,delay_GF,figure_no,sim_time]
%
% generates Gaussian filtered pulse train
% 
%
% Input	   : g            - Gaussian coefficient
%	      data         - impulse train
%             plot_control - 
%	      figure_no    -
% Output    : b        - Gaussian pulse waveform
%	      delay_GF - delay created by Gaussian filter
%	      figure_no
% local var : 
% clear var : 
%
% Author    : Jeff Laster, MPRG, Virginia Tech 
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++		 
t0 = clock;

b         = filter(g,1,data); % 计算高斯滤波器的频率响应
delay_GF  = fix(length(g)/2);

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAaXJvbmJhdA==,size_18,color_FFFFFF,t_70,g_se,x_16

 

 

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值