m基于matlab的DQPSK调制解调技术的仿真

简介: m基于matlab的DQPSK调制解调技术的仿真

1.算法概述
4进制的DPSK通常记为DQPSK。DQPSK信号编码方式如下表:

1.png

  表中  θk是相对于前一相邻码元的相位变化。共有A、B两种方式。B方式中相邻码元间总有相位改变,故有利于在接收端提取码元同步。另外由于其相邻码元相位的最大相移为±135°,比A方式的最大相移小,素在通过频带受限的系统传输后其振幅起伏也较小。B方式DQPSK又称π/4DQPSK。DQPSK的产生方法与QPSk类似,但是DQPSK先将输入的双比特码经码型变换,再用码型变换器输出的双比特码进行四相绝对移相,则所得到的输出信号就是四相相对移相信号。通常采用的方法是码变换加调相法和码变换加相位选择法。

  码变换加调相法。码变换加调相法产生DQPSK信号的组成方框图如下图所示。串行的二进制不归零双极性码元经串并转换器变换后变为两路并行码元ab,经码变换器变换为相对码元cd,之后分别与一对相干载波相乘,最后进行相加,即可产生DQPSK信号。与QPSK信号的产生方法不同的是,DQPSK的产生需将串并转换后的码元ab经码变换器变为相对码cd,且在相干载波的产生时,用两个π/4相移器代替一个π/2相移器,这样所产生的码元符合A方式编码。

2.png

码变换加相位选择法。其组成方框图如下图所示。其中的逻辑选项电路除按规定完成选择载波的相位外,还应实现将绝对码转换成相对码的功能。也就是说,在四相绝对移相时,直接用输入双比特码去选择载波的相位;而在四相相对移相时,需要将输入的双比特码ab转换成相对应的双比特码cd,再用cd去选择载波的相位,这样就可产生DQPSK信号。
3.png

2、DQPSK信号的解调

DQPSK信号的解调与2DPSK信号的解调类似,也有两种方法,分别是极性比较法和相位比较法。

  极性比较法。其原理方框图如下图所示。由于DQPSK信号可以看做是两路2DPSK信号的合成,解调时也可以分别按两路2DPSK信号解调,因此在解调过程中用两路相干载波去解调,可以很容易分离出这两路正交的2DPSK信号。经低通滤波和抽样判决后恢复出相对相对码,再经码反变换器变换成绝对码,从而恢复出发送的二进制信息。

4.png

相位比较法。其原理方框图如下图所示。用这种方法解调时不需要专门的相干载波,只需由收到的信号时延一个码元间隔T,然后与信号本身相乘。相乘起着相位比较的作用,相乘结果反映了前后码元的相位差,经低通滤波后在抽样判决,即可直接恢复出原始数字信息,故解调器中不需要码反变换器。
5.png

2.仿真效果预览
matlab2022a仿真结果如下:

6.png
7.png
8.png

3.MATLAB部分代码预览

N = 10000;                            %仿真量大小
EbN0_indB = -2 : 0.5 : 12;            %仿真的信噪比点
EbN0 = 10.^(EbN0_indB/10);            %dB转换为自然值
times = 50;                           %仿真次数
err_rate = zeros(length(EbN0),times);
 
for ii = 1 : length(EbN0)
        for i = 1 : times
            r = rand(1,2*N);
            source = r>0.5;           %产生二进制信源
            b = 1 - 2*source;         %改变为反极性           
            bI = zeros(1,N);          %同相支路
            I = zeros(1,N);
            bQ = zeros(1,N);          %正交支路
            Q = zeros(1,N);
            delta = zeros(1,N);       %载波相位差
            for n = 1 : N             %串并变换
                bI(n) = b(2*n);
                bQ(n) = b(2*n-1);
                if n == 1             %差分编码  
                    I(n) = (bI(n)*bI(n) - bQ(n)*bQ(n))/sqrt(2);
                    Q(n) = (bQ(n)*bI(n) + bI(n)*bQ(n))/sqrt(2);
                else
                    I(n) = (I(n-1)*bI(n) - Q(n-1)*bQ(n))/sqrt(2);
                    Q(n) = (Q(n-1)*bI(n) + I(n-1)*bQ(n))/sqrt(2);
                end
            end
            Eb_x = cov(I);                       %信号能量
            Eb_y = cov(Q);
            sigma_x = sqrt(Eb_x/(2*EbN0(ii)));   %根据信噪比计算噪声方差
            sigma_y = sqrt(Eb_y/(2*EbN0(ii)));
            noise_x = randn(1,N)*sigma_x;        %高斯噪声产生
            noise_y = randn(1,N)*sigma_y;
            w = I + noise_x;                     %AWGN信道传输
            z = Q + noise_y;
            errornum_x = 0;              %错误数
            errornum_y = 0;
            for n = 1 : N                %差分译码
                if n == 1
                   x(n) = w(n)*w(n) + z(n)*z(n);
                   y(n) = z(n)*w(n) - w(n)*z(n);
                else
                   x(n) = w(n)*w(n-1) + z(n)*z(n-1);
                   y(n) = z(n)*w(n-1) - w(n)*z(n-1);
                end
                if x(n) <= 0                   %判决x
                    result_x(n) = -1;  
                elseif x(n) > 0
                    result_x(n) = 1;
                end
                if y(n) <= 0                   %判决y
                    result_y(n) = -1;  
                elseif y(n) > 0
                    result_y(n) = 1;
                end
                if result_x(n) ~= bI(n)        %计算x错误数
                    errornum_x = errornum_x + 1; 
                end
                if result_y(n) ~= bQ(n)        %计算y错误数
                    errornum_y = errornum_y + 1;
                end
                if errornum_x + errornum_y >= 100
                    break
                end
            end
            err_rate(ii,i) = (errornum_x + errornum_y)/(2*n);
        end
end
01_051_m
相关文章
|
6天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
53 31
|
15小时前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
|
17小时前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统基于MATLAB 2022a仿真,适用于高要求的图像传输场景(如无人机、视频监控等),采用64QAM调制解调、扩频技术和Turbo译码提高抗干扰能力。发射端包括图像源、64QAM调制器、扩频器等;接收端则有解扩器、64QAM解调器和Turbo译码器等。核心程序实现图像传输的编码、调制、信道传输及解码,确保图像质量和传输可靠性。
25 16
|
6天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
5天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
15天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
13天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
13天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
16天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
18小时前
|
机器学习/深度学习 人工智能 算法
基于GRNN广义回归网络和MFCC的语音情绪识别matlab仿真,对比SVM和KNN
该语音情绪识别算法基于MATLAB 2022a开发,可识别如悲伤等情绪,置信度高达0.9559。核心程序含中文注释及操作视频。算法采用MFCC特征提取与GRNN广义回归网络,通过预加重、分帧、加窗、FFT、梅尔滤波器组、对数运算和DCT等步骤处理语音信号,实现高效的情绪分类。

热门文章

最新文章