m基于高阶累积量和信号子空间的信噪比估计方法的matlab仿真

1.算法描述

       随着信息技术的飞速发展,信息战逐渐成为战争的一个重要方式。因此,掌握战场的信息控制权是赢得战争的重要因素。在信息战中,为了干扰和破坏对方的通信系统,首先需要获得对方通信系统的通信方式、通信系统的参数等信息。因此,需要对对方的通信信息进行分析和参数估计,从而达到干扰敌对通信系统的目的。在通信信号的参数估计过程中,对信号的信噪比估计是一个重要环节,通过对信号的信噪比估计奠定了信号的调制识别,解调,译码的基础。因此,研究信噪比估计方法最优十分重要的意义。

 

       目前,关于信噪比估计方法有较多成熟的技术,根据其估计方式,现有的技术可以分为两大类:第一种是基于辅助数据的估计方法,通过在发送数据中周期性的插入可识别的训练数据,并在接收端根据训练数据进行信噪比估计的方法。第二种是盲估计方法,这种方法无需借助辅助数据。通信信号信噪比的盲估计是指在不获取通信先验信息的情况下对信号的信噪比进行估计。在军事对抗通信中,往往无法获取敌方通信的先验信息,因此只能采用信噪比的盲估计。

 

        基于信号子空间(SBsubspace-based)的信噪比盲估计算法,其无需借助任何信道的参数信息,直接通过特征值分解的方式,将接收信号中的有效信号与噪声干扰相分离,从而计算出信噪比的估计值。因此,信号子空间的信噪比盲估计算法具有较强的信道适应能力,具有较为广泛的应用前景。

 

       针对基于高阶累积量的信噪比盲估计方法和基于信号子空间的信噪比盲估计方法进行研究。其中,基于高阶累积量的信噪比盲估计方法,其主要原理是通过计算接收信号的高阶累积量来获得信号矩,继而估计出信号能量和噪声能量,并最终获得信噪比的估计值。基于信号子空间的信噪比盲估计方法,其主要通过计算信号的协方差,将信号和噪声进行分离,并得到信噪比估计值的方法。最后通过MATLAB仿真软件对基于高阶累积量的信噪比盲估计方法和基于信号子空间的信噪比盲估计方法两种算法进行仿真分析。

 

 

 

 

       高阶统计量,通常是指信号的高阶矩,高阶累积量等信号统计信息的统称。在这些高阶统计量中,高阶累积量具有十分重要的重用,不同阶数的累积量可以反映出信号的不同特征,因此高阶累积量往往应用在信号分类,信号调制方式识别等领域。高阶累积量中的二阶累积量和四阶累积量可以有效抑制高斯白噪声的干扰,且对相位偏移具有一定的容错能力,其数学表达式为:

 

 

 

 

 

 

关于信噪比参数估计主要做了如下几个方面的研究。

 

第一、研究了基于高阶累积量的信噪比盲估计法和基于信号子空间信噪比盲估计法的基本原理。其中,高阶累积量的原理是通过计算信号矩的方式获得信号能量与噪声能量的估计值。信号子空间法的原理是通过对信号协方差矩阵的分解来分离信号与噪声,从而得到信号的信噪比估计值。

 

第二、通过MATLAB对高阶累积量信噪比估计法与信号子空间信噪比估计法进行了性能分析。分别分析了高阶累积量信噪比估计法与信号子空间信噪比估计法的性能、输入信号长度对信噪比估计结果的影响分析、不同采样频率对信噪比估计结果的影响分析、不同频偏对信噪比估计结果的影响分析、定时误差对信噪比估计结果的影响分析。仿真实验表明信号子空间信噪比估计法性能优于高阶累积量信噪比估计法。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

3.MATLAB核心程序

 

clc;
clear;
close all;
warning off;
 
%MPSK调制
%参数说明
% y         输出序列
% x         输入序列
% fc        载波频率
% fs        采样频率
% rc        码元速率
% M         调制模式M=2,4,8
 
x      = rand(1,200)>=0.5;
fc     = 16e6;
fs     = 4*fc;
rc     = 2e6;
M      = 4;
detafy = 0*pi/6;
 
[y0,y_test] = func_MPSKgen(x,fc,fs,rc,M,detafy);
 
%%
%通过信号子空间估计信噪比
%通过高阶累积量估计信噪比
SNR    = [0:0.5:20];
R1     = zeros(size(SNR));
R2     = zeros(size(SNR));
for sj = 1:length(SNR)
    sj
    y         = awgn(y0,SNR(sj),'measured');
    [c21,c42] = func_csum(y);%高阶累积量
    SNRset1   = sqrt(abs(c42)/2)/(c21-0.965*sqrt(abs(c42)))+4;
    
    SNRset2   = func_snr_est(y);
    R1(sj)    = SNRset1;
    R2(sj)    = SNRset2;
end
 
figure;
subplot(121)
plot(SNR,SNR,'r');
hold on
plot(SNR,R1,'o');
grid on
xlabel('SNR');
ylabel('高阶累积量');
legend('标准SNR','估计SNR');
title('高阶累积量估计信噪比');
subplot(122)
plot(SNR,SNR,'r');
hold on
plot(SNR,R2,'o');
grid on
xlabel('SNR');
ylabel('高阶累积量');
legend('标准SNR','估计SNR');
title('信号子空间估计信噪比');
01_151m

 

  

 

posted @ 2023-02-21 19:19  我爱C编程  阅读(146)  评论(0编辑  收藏  举报