m基于matlab的PCM-FM码同步和GMSK的调制和解调方法,包括多符号检测MSD和Turbo编解码

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

1. 用MATLAB仿真多符号检测(MSD)和Turbo乘积码的编解码,

2. Turbo码同步参数的优化设计及其性能;

3. 比较TPC和纠删码的性能;

4. 学习GMSK的调制、解调方式,利用MATLAB对其进行仿真;并考虑是否可以利用PCM/FM加入PN码或其他方式实现测距功能;

       1.高斯最小频移键控(Gaussian Filtered Minimum Shift Keying),这是GSM系统采用的调制方式。数字调制解调技术是数字蜂窝移动通信系统空中接口的重要组成部分。GMSK调制是在MSK(最小频移键控)调制器之前插入高斯低通预调制滤波器这样一种调制方式。GMSK提高了数字移动通信的频谱利用率和通信质量。GMSK调制技术是从MSK(Minimum Shift Keying)调制的基础上发展起来的一种数字调制方式,其特点是在数据流送交频率调制器前先通过一个Gauss滤波器(预调制滤波器)进行预调制滤波,以减小两个不同频率的载波切换时的跳变能量,使得在相同的数据传输速率时频道间距可以变得更紧密。由于数字信号在调制前进行了Gauss预调制滤波,调制信号在交越零点不但相位连续,而且平滑过滤,因此GMSK调制的信号频谱紧凑、误码特性好,在数字移动通信中得到了广泛使用,如广泛使用的GSM(Global System for Mobile communication)移动通信体制就是使用GMSK调制方式。

        2.多符号检测(MSD)和Turbo乘积码(TPC)技术联合应用可以大幅提高脉冲编码调制/调频(PCM/FM)遥测系统性能.针对MSD算法计算复杂度高的问题提出了一种改进的MSD算法,可以有效降低计算复杂度;在TPC的传统Chase译码算法中通过简化软输入信息计算可以降低系统存储量.

       3.turbo码,又称并行级联卷积码(PCCC,Parallel Concatenated Convolutional Codes),此种编码方法将常用的卷积码和随机交织器巧妙的结合起来,采用并行级联的结构,实现了随机编码的思想。Turbo Codes译码是一类具有反馈结构的伪随机译码器,2个码可以交替互不影响的译码,并且还可以通过关于系统码信息位的软判决输出相互传递信息,进行递推式迭代译码。

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

3.MATLAB核心程序

clc;
clear;
close all;
warning off;
addpath 'func_MSD\'
 
Frame_Nums = 400;
Numbers    = 200;
Num_sym    = 10;
SNR1       = [4:1:9];
SNR2       = 10.^(SNR1/10);
VAR        = 1./(SNR2*2);
h          = 0.7;
load('Table.mat');
[Ro,Co]    = size(Table);
Rate       = 10;
Carrier    = 70;
 
for indx2 = 1:length(SNR1)
    indx2
    ERR    = 0;
    var    = VAR(indx2);  
    for nn=1:Frame_Nums
        nn
        Dat_trans  = randsrc(1,Numbers,[0 1]);
        %差分编码
        Dat_trans2 = func_chafen(Dat_trans,Numbers);
        %参数初始化
        parameter;
        %MSD检测
        while indx < Numbers
            tmps        = exp(j*4*h*number)*Dat_trans2(indx);
            Rec(number) = awgn(tmps,(1-(Rate/Carrier)^2)*SNR1(indx2),'measured');
            number      = number+1;
            indx        = indx + 1;
            if number == Num_sym + 1
               number = 1;
               indx   = indx-2;
               %计算模
               y           = func_abs(Rec,Num_sym);
               %MSD检测
               MSD_results = func_MSD_Check(y,Table,Num_sym,Ro,Co);
               %检测误码率
               for hh=1:Num_sym-2 
                   if MSD_results(hh) ~= Dat_trans(hh+times*Co)
                      ERR = ERR + 1;
                   end
               end
               times       = times + 1;   
            end
        end
    end
    Berrs(indx2) = ERR/(Numbers*Frame_Nums*Num_sym);
end
 
figure;    
semilogy(SNR1,Berrs,'b-o');
legend('ber of MSD');
xlabel('SNR');
ylabel('ber');
grid on;  
 
if Rate == 1;
   save msd1.mat SNR1 Berrs   
end
if Rate == 2;
   save msd2.mat SNR1 Berrs    
end
if Rate == 10;
   save msd3.mat SNR1 Berrs    
end
01-128m

4.完整MATLAB

V

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值