m一种基于QPSK信号的准最大似然译码器误码率matlab仿真

简介: m一种基于QPSK信号的准最大似然译码器误码率matlab仿真

1.算法描述
《An efficient quasi-maximum likelihood decoder for PSK signal》

《[1] Luo Z Q , Luo X , Kisialiou M . An efficient quasi-maximum likelihood decoder for PSK signals[C]// IEEE. IEEE, 2003.》

    Since exact maximum likelihood (ML) detection is computationally intractable in general, approximate ML approaches are needed to reduce the computation time while maintaining low bit error rate (BER). In this work, we develop an efficient approximate ML decoder for constant modulus signals based on a simple nonlinear programming relaxation. Unlike the existing sphere decoder whose expected complexity is cubic in problem size and whose performance deteriorates with increasing problem size and noise level, our proposed new decoder enjoys a worst case quadratic complexity and scales gracefully with problem dimension and noise level. Our initial testing and analysis suggests that this new decoder is capable of delivering ML like BER performance for PSK signals while requiring substantially lower computational complexity. In this sense, our new decoder is similar to the sphere decoder which is an effective method for QAM signals.

image.png

    这里,从论文的仿真图可知,我们所要做的主要工作就是本课题所使用的算法和球形译码的性能对比。球形译码的不是本文的研究内容,其主要参考文献3获得,这里不做介绍,这里我们重点介绍本文所研究的PSKD算法。

    其中误码率,我们进行系统的误码率分析,而复杂度的对比,我们这里主要是统计仿真时间,然后反映其复杂度,注意,这里仿真时间和电脑的配置有关,配置牛逼,则仿真时间则越短,但是其复杂度的对比曲线基本变化趋势是不变的。

  这里,我们主要根据

image.png

上述算法流程进行仿真。

2.仿真效果预览
matlab2022a仿真如下:
3.png
4.png
5.png

3.MATLAB核心程序

%统计无码数
Times        = 500;
%m
Tm           = 10;
%n
Rn           = 10;
%仿真序列帧长度
data_Numbers = 300;
 
for i=1:length(SNR) 
     Bit_err(i) = 0;
     Num_err    = 0;
     Numbers    = 0; %误码率累加器   
     N0         = 10/(10^(SNR(i)/10));  
     while Num_err <= Times
           Num_err
           fprintf('SNR = %f\n', SNR(i));
           %产生需要发送的随机数
           Trans_data  = round(rand(1,data_Numbers)); 
           %BPSK
           Trans_BPSK  = 2*Trans_data-1;
           %作为发送信源
           MIMO_Tx(1,:) = Trans_BPSK;
           for send_loop = 2:Tm            
               MIMO_Tx(send_loop,:) = MIMO_Tx(1,:);              
           end
           %信道
           H_Ray = (randn(Rn,Tm)+sqrt(-1)*randn(Rn,Tm))/sqrt(2);
           H_Ray = abs(H_Ray);
           %QUASI-ML PSK decoder算法
           for k=1:data_Numbers
               y            = H_Ray*MIMO_Tx(:,k) + 2*N0*randn(size(H_Ray*MIMO_Tx(:,k)));
               y            = y/max(max(abs(y)));
               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
               e0    = 0.5;
               beta0 = 0.4;
               n1    = 10;
               n2    = 10;
               ee    = zeros(n1,1);
               %STEP1
               for i1 = 1:n1
                   ee(i1) = -i1*e0/(n1-1) + n1*e0/(n1-1);
                   x1s    = [-1-ee(i1)+(2+2*ee(i1))/Tm:(2+2*ee(i1))/Tm:1+ee(i1)];
                   for k1 = 1:Tm
                       x1     = x1s(k1)*ones(Tm,1); 
                       f1(k1) = x1'*H_Ray'*H_Ray*x1 - y'*H_Ray*x1 - x1'*H_Ray'*y + y'*y;
                   end
                   [g1(i1),xk1(i1)] = min(f1);
               end
               [g11,xk11] = min(g1);
               XK1        = y(xk1(xk11));
               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
               %STEP2
               M = 64;
               for i2 = 1:n2
                   beta(i2)   = -i1*beta0/(n2-1) + n2*e0/(n2-1);
                   deltaa(i2) =  2*pi*(i2-1)/(M*(n2-1));
                   x2s        = [-1-beta(i2)+(2+2*beta(i2))/Tm:(2+2*beta(i2))/Tm:1+beta(i2)];
                   for k2 = 1:Tm
                       x2        = x2s(k2)*ones(Tm,1); 
                       f2(i2,k2) = x2'*H_Ray'*H_Ray*x2 - y'*H_Ray*x2 - x2'*H_Ray'*y + y'*y;
                   end
               end
               for k2 = 1:Tm
                   [g2,xk2] = min(f2(:,k2));
                   XK2(k2)  = y(xk2);
               end
               %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                %STEP3
               a5(:,k)  = XK2;
           end
           %接收
           MIMO_Rx     = a5;
           MIMO_Rx2    = ones(1,Tm)*MIMO_Rx(:,:);    
           Rec_data    =(sign(MIMO_Rx2)+1)/2; 
           [nberr,rat]  = biterr(Trans_data,Rec_data);
           Num_err     = Num_err+nberr;
           Numbers     = Numbers+1;    
    end 
    Bit_err(i)=Num_err/(data_Numbers*Numbers);
end
 
figure;
semilogy(SNR,Bit_err,'o-r');
xlabel('SNR(dB)');
ylabel('BER');
grid on;
% save BPSK_10_err.mat SNR Bit_err
01_108m
相关文章
|
16小时前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统基于MATLAB 2022a仿真,适用于高要求的图像传输场景(如无人机、视频监控等),采用64QAM调制解调、扩频技术和Turbo译码提高抗干扰能力。发射端包括图像源、64QAM调制器、扩频器等;接收端则有解扩器、64QAM解调器和Turbo译码器等。核心程序实现图像传输的编码、调制、信道传输及解码,确保图像质量和传输可靠性。
25 16
|
1月前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
2月前
|
算法 5G 数据安全/隐私保护
MIMO系统中差分空间调制解调matlab误码率仿真
本项目展示了一种基于Matlab 2022a的差分空间调制(Differential Space Modulation, DMS)算法。DMS是一种应用于MIMO通信系统的信号传输技术,通过空间域的不同天线传输符号序列,并利用差分编码进行解调。项目包括算法运行效果图预览、核心代码及详细中文注释、理论概述等内容。在发送端,每次仅激活一个天线发送符号;在接收端,通过差分解调估计符号和天线选择。DMS在快速衰落信道中表现出色,尤其适用于高速移动和卫星通信系统。
|
2月前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码
本程序系统基于BP译码的LDPC误码率MATLAB仿真,分析不同码长、码率、信道对译码性能的影响,并与卷积码、Turbo码及BCH编译码进行对比。升级版增加了更多码长、码率和信道的测试,展示了LDPC码的优越性能。LDPC码由Gallager在1963年提出,具有低复杂度、可并行译码等优点,近年来成为信道编码研究的热点。程序在MATLAB 2022a上运行,仿真结果无水印。
61 0
|
3月前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。
|
4月前
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
143 2
|
4月前
|
算法 数据安全/隐私保护
基于星座图整形方法的QAM调制解调系统MATLAB误码率仿真,对比16,32,64,256四种QAM调制方式
本MATLAB 2022a仿真展示了不同QAM阶数下的星座图及误码率性能,通过星座图整形技术优化了系统性能。该技术利用非均匀分布的星座点提高功率效率,并通过合理布局增强抗干扰能力。随着QAM阶数增加,数据传输速率提升,但对信道质量要求也更高。核心程序实现了从比特生成到QAM映射、功率归一化、加噪及解调的全过程,并评估了系统误码率。
88 0
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
225 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
141 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
111 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章