资源简介
基于Matlabm文件的GMSK调制解调系统仿真代码实现的修改版本,原始代码在文档中,修正代码的gmsk.m文件中
代码片段和文件信息
% 附录:MATLAB程序
%绘制调制波形00101010
%
clear all;
close all;
%******************** Preparation part ************************************
% Ts=1/16000; %基带信号周期为1/16000s即为16KHz
Tb=1/32000; %[码元]输入信号周期为Ts/2=1/32000s即32KHz【奈奎斯特采样】
BbTb=0.5; %取BbTb为0.5调制指数为0.5的二元数字频率调制
Bb=BbTb/Tb; %3dB带宽 -_-半带宽=码元频率一半-_-!
Fc=32000; %载波频率为32KHz -_-载波频率=码元频率-_-!
Fc_sample=64; %每载波采样64个点
B_num=8; %基带信号为8个码元
Dt=1/(Fc*Fc_sample); %采样间隔[载波周期/采样点数][4.88281250000000e-07]
B_sample=Tb/Dt; %每基带码元采样点数 B_sample=Tb/Dt[输入信号/采样间隔]
t=0:Dt:B_num*Tb-Dt; %仿真时间离散点[采样间隔,码元数*(时间/码元)]
T=Dt*length(t); %仿真时间值[采样间隔*512个采样点]
Ak=[0 0 0 0 0 0 0 0]; %产生8个基带信号[8个比特]
Ak=2*Ak-1; %[多此一举] %单极性码元—>双极性码元
gt=ones(1B_sample); %每码元对应的载波信号[1*64]
Akk=sigexpand(AkB_sample); %码元扩展[64*8->1*512]
temp=conv(Akkgt); %码元扩展[卷积向量Akk和gt 512+64-1]
Akk=temp(1:length(Akk)); %码元扩展[取出temp变量中前512个,类似于银行存款,第一年存入的钱会一直享受利息值最后一年,第二年存入的钱会一直享受利息值最后一年]
%************************* Filter initialization **************************
tt=-2.5*Tb:Dt:2.5*Tb-Dt; %{2.5*码元周期}/{采样间隔=[载波周期/采样点数]}
%g(t)=Q[2*pi*Bb*(t-Tb/2)/sqrt(log(2))]-Q[2*pi*Bb*(t+Tb/2)/sqrt(log(2))];
%Q(t)=erfc(t/sqrt(2))/2;
gaussf=erfc(2*pi*Bb*(tt-Tb/2)/sqrt(log(2))/sqrt(2))/2-erfc(2*pi*Bb*(tt+Tb/2)/sqrt(log(2))/sqrt(2))/2;
%the complementary error function erfc(X) is defined as
%erfc=2/sqrt(pi)int_{x}^{+\infty}exp{-t^2}dt
J_g=zeros(1length(gaussf)); %使J_g 的长度和Gaussf的一样
%************************ SUM GMSK ****************************************
for i=1:length(gaussf) %320个点
if i==1
J_g(i)=gaussf(i)*Dt; %若不乘以Dt则最后结果要出错?
else
J_g(i)=J_g(i-1)+gaussf(i)*Dt; %若不乘以Dt则最后结果要出错?
end;
end;
J_g=J_g/2/Tb; %若先前循环不乘以Dt则最后结果要出错?
%******************** START CALCULATION ***********************************
%计算相位Alpha
Alpha=zeros(1length(Akk));
k=1; %计算第1个码元的相位
L=0;
for j=1:B_sample %采样点数为64
J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample); %第3码元对应乘以J_g矢量第j[1-64]个值
Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2;% 刷新 Alpha512 中 1-64
end;
k=2;%计算第2个码元的相位
L=0;
for j=1:B_sample%采样点数为64
J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample);%第3码元对应乘以J_g矢量第j[65-128]个值
%第4码元对应乘以J_g矢量第j[1-64]个值
Alpha((k-1)*B_sample+j)=pi*J_Alpha+L*pi/2;% 刷新 Alpha512 中 65-128
end;
k=3;%计算第3个码元的相位
L=0;
for j=1:B_sample%采样点数为64
J_Alpha=Ak(k+2)*J_g(j)+Ak(k+1)*J_g(j+B_sample)+Ak(k)*J_g(j+2*B_sample)+Ak(k-1)*J_g(j+3*B_sample)+Ak(k-2)*J_g(j+4*B_sample);
%第3码元对应乘以J_g矢量第j[129-192]个值
%第4码元对应乘以J_g矢量第j[65-128]个值
%第5码元对应乘以J_g矢量第j[1-64]个值
Alpha((k-1)*B_sample+j
- 上一篇:GMSK调制解调完整流程
- 下一篇:地杂波仿真程序
相关资源
- GMSK调制解调完整流程
- 图像的简单处理
- 基于matlab的QPSK系统仿真
- 四元数matlab工具箱2.6版
- 局部二值化
- matlab_决策树C4.5算法源代码
- 动态聚类MATLAB 代码
- 小波去噪算法matlab代码
- 用matlab编写的用遗传算法优化神经网
- OFDM同步算法matlab实现
- 用Matlab 解决碎片拼接的源程序
- 基于水平集的分割方法MATLAB代码
-
基于MATLAB/Simuli
nk的双闭环直流调速 - EMD实现的MATLAB代码
- 图像分割-分水岭算法MATLAB代码
- 最小距离分类
- 灰度共生矩阵实现及四个主要特征提
- e-greedy n-armed bandits problem matlab实现
- matlab提取视网膜血管
- TAODV_matlab代码
- KL变换matlab
- matlab SIRT CT重建算法
- SOR迭代法Matlab程序
- 基于matlab对2ask信号的调制设计
- Retinex Matlab算法
- matlab-gui-test.m
- 遗传算法&物流配送
- 认知无线电频谱感知之功率检测matl
- 四阶累积量的MUSIC算法的MATLAB程序
- MATLAB在线性二次型最优控制器设计中
评论
共有 条评论