您现在的位置:首页 >> 通信 >> 内容

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

时间:2022/12/11 21:19:36 点击:

  核心提示:01-128m,包括程序操作录像+说明文档...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5mYlZdt

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览






3.算法概述

       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个码可以交替互不影响的译码,并且还可以通过关于系统码信息位的软判决输出相互传递信息,进行递推式迭代译码。

4.部分源码

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168