m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线

目录

1.算法概述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法概述

      2DPSK又称为相对相移键控,它不是利用载波相位的绝对数值传送数字信息,而是用前后码元的相对载波相位值传送数字信息。所谓相对载波相位是指本码与前一码元初相之差。

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第1张图片

如图,这里输入的信号为1000001000_0110001010_0111101000

串并之后得到数据(由于延迟1个符号,数据的第一个值不计入计算,最后一位图中未显示):

I: 1 0 0 1 0   0 1 0 0 1   1 0 1 1 1 0

Q:0 0 0 0 0   1 0 0 0 0   0 1 1 0 0 0

·电平转化

对于2/4电平的转换,其实是将输入信号的4种状态(00,01,10,11)经过编码以后变为相应的4电平信号。这里我们选择的映射关系如表4-1所示。

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第2张图片

2.仿真效果预览

matlab2022a仿真

 ·串并

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第3张图片

仿真结果如下所示:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第4张图片

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第5张图片

其最后的速率变为了原数据的1/4了。

·载波调制

该模型的仿真结果如下所示:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第6张图片

·加入高斯白噪声

这个模块比较简单,但是需要值的注意的是:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第7张图片

 

其参数中有个输入信号的功率的输入,所以我们需要在模型中加入如下的模块:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第8张图片

这个模块就是计算信号的功率的,将5.091输入到参数设置中即可。

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第9张图片

以上是调制部分的仿真和最后的星座图

下面开始仿真解调部分:

·下变频

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第10张图片

其仿真结果如下所示:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第11张图片

·滤波

 

  这里,滤波器使用的模块为:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第12张图片

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第13张图片

 

·电平转化之后得到如下的结果:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第14张图片

·最后是并串转化

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第15张图片

通过观察和之前的数据,发现完成相同, 这说明是正确的,最后加入误码率统计模块,得到其误码率为:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第16张图片

这个误码率是一开始传输的时候延迟多出的两个bit信息照成的。

下面仿真其误码率曲线图:

由于误码率曲线是在不同的SNR下仿真的,所以这里就需要借助MATLAB联合Slimulink进行仿真。

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第17张图片

16QAM2DPSK的对比:

m基于simulink的16QAM和2DPSK通信链路仿真,并通过matlab调用simulink模型得到误码率曲线_第18张图片

3.MATLAB部分代码预览

clc;
clear;
close all;
warning off;

SNRs   = [-2 0 2 4 6 8 10 12 14];
Length = 30000;
Err1   = zeros(1,length(SNRs));
Err2   = zeros(1,length(SNRs));
ind    = 1;
for i = 1:length(SNRs)
    i
    SNR = SNRs(i);
    sim('module_16qam.mdl');%调用simulink模块
    Err1(ind) = ErrQAM.signals.values(end,1);%将simulink的输出结果的平均值作为平均速度
    ind      = ind + 1;%计数器累加    
    clear    ErrQAM
end
ind    = 1;
for i = 1:length(SNRs)
    i
    SNR = SNRs(i);
    sim('module_2dpsk.mdl');%调用simulink模块
    Err2(ind) = Err2dpsk.signals.values(end,1);%将simulink的输出结果的平均值作为平均速度
    ind      = ind + 1;%计数器累加    
    clear    ErrQAM
end

figure;
semilogy(SNRs,Err1,'b-*');
grid on;
xlabel('SNR');
ylabel('Err');
legend('16QAM');

figure;
semilogy(SNRs,Err2,'b-*');
grid on;
xlabel('SNR');
ylabel('Err');
legend('2DPSK');

figure;
semilogy(SNRs,Err1,'b-*');hold on
semilogy(SNRs,Err2,'r-*');hold on
grid on;
xlabel('SNR');
ylabel('Err');
legend('16QAM','2DPSK');
01-45m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

你可能感兴趣的:(Matlab通信和信号,matlab源码,16QAM,2DPSK通信链路)