根据是否需要辅助数据,信噪比估计算法可以分为数据辅助类算法(Data aided, DA)和非数据辅助类算法(No Data aided, NDA)。DA估计算法准确性较高,但是需要提供先验信息,需要牺牲信道传输效率。NDA方法在传输数据信息的同时进行信噪比估计,不影响信息传输效率,适用范围较广。
根据所采纳的信号处理方法,信噪比估计可以分为最大似然估计(Maximum Likelihood, ML)、谱分析法以及统计量法。在这三种方法中,最大似然估计能够在存在辅助信号的情况下得到最高水平的精度。
二进制相移键控(Binary Phase Shift Keying ,BPSK)是一种数字频带调制中的非线性调制,通过调制载波的不同相位来传送数据。由于BPSK是一种相位调制方式,在相位上引入信息,对接受信号的幅度变化不敏感,因此BPSK具有抗干扰性强、抗多径衰落等优点。
是二进制基带信号时间间隔,是持续时间为,高度为1的矩形脉冲。BPSK可以通过模拟调相法、数字键控法调制,采用与接收的BPSK信号同频同相的相干载波解调。在解调时,用以恢复的本地载波与所需的相干载波可能同相,也可能反相,这会造成倒现象,可用2DPSK取代克服该问题。
基于统计量的估计方法有二阶四阶矩估计法(Second and Fourth Order Moments, M2M4)与分离符号矩(Split Symbol Moment, SSME),通过构造统计量分离信号和噪声。
M2M4算法精确度与采样信号数成正比,在小信噪比时误差较大。采样信号的二阶矩如下:
由于信号与噪声相互独立,和为实数,因此和的互相关系数为0。且噪声为零均值单位方差加性高斯白噪声,即,。因此,上式可化简为:
同理,四阶矩可化简为下式:
其中,。
联立两式可得:
则,信噪比可表示为:
M2M4算法在实践中使用时间平均替代统计平均,对采样信号求二次方、四次方,在四种算法中计算最为简单。
该估计算法要求将BPSK信号转换为基带信号,即双极性不归零信号。文章来源:https://www.toymoban.com/news/detail-765496.html
matlab参考代码如下:文章来源地址https://www.toymoban.com/news/detail-765496.html
clear;clc;
%% 参数设置
global M2 M4 ;
bps = 1000;% 码元速率(每秒比特数)
SNRs = zeros(size(bps)); % 保存信噪比结果
SNR_estimaed=[];
T = 1/bps; % 符号持续时间
fs =10000; % 采样频率为码元速率的50倍
Ts = 1/fs; % 采样间隔
Ns = T/Ts; % 每个码元的采样点数
sps=2;%rcondesign,upfirdn的采样点数
t=0:1/fs:T-1/fs;
fc=1e3;%载波频率
count=1;
N=500;%二进制符号数
%% 计算bps码元速率下的信噪比
%% 生成BPSK信号
bits = randi([0 1], 1, N); % 随机生成1000个二进制比特
symbols = 2*bits - 1; % BPSK调制,映射到实数值序列
upsamples = repmat(symbols, Ns, 1); % 扩展为持续时间为T的矩形波
waveform = upsamples(:)'; % 将矩阵转换为向量
input=waveform;
% modulation=real(exp(2i*pi*fc*t));%调制函数
% modulation=exp(2i*pi*fc*t);%调制函数
modulation=ones(1,Ns);
%% 加成形滤波器(M2M4不适合加滤波器)
% rrcfilter=rcosdesign(0.5,Ns/2,sps,'sqrt');%x=10*sps+1个点升余弦滤波器
% input=upfirdn(waveform,rrcfilter,sps);%y=x+(bpsk-1)*sps个点
% L=Ns/2+1;%矩形滤波器长度
% rectangle=rectwin(L)'/L;
% input=conv(rectangle,input);
%% 调制
b=[];%存储bpsk调制
for j=1:N
start=Ns*j-Ns+1;
stop=Ns*j;
a=waveform(start:stop);
b = [b,a.*modulation];
end
input=b;
%% 添加高斯白噪声
for x =1:30
SNRdB =x-10;% 信噪比(以dB为单位)
output=[,];
received = awgn(input, SNRdB, 'measured'); % 添加高斯白噪声
%% 加匹配滤波器 M2M4算法加滤波器将影响大信噪比时估计准确性
% output=upfirdn(received,conj(fliplr(rrcfilter)),1,sps);%对rrc滤波器先反折再共轭
% output=conv(received,conj(fliplr(rectangle)));
% received=output;
%% 使用M2M4算法计算信噪比
SNR_estimated(count,x)=M2M4(received);
end
%% 打印结果
% 生成信噪比范围
a = -9:20; % 信噪比范围
%% 理论信噪比的影响
% 第一个图:信噪比估计值与实际值比较
figure; % 创建一个新的图形窗口
hold on; % 启用绘图保持模式
grid on; % 显示网格线
plot(a, SNR_estimated,'ok-', 'linewidth', 1.1, 'markerfacecolor', [36, 169, 225]/255); % 绘制信噪比估计值曲线
plot(a, a,'ok-', 'linewidth', 1.1, 'markerfacecolor', [29, 191, 151]/255); % 绘制实际信噪比曲线
xlabel('理论信噪比值'); % 设置横轴标签
ylabel('估计信噪比值'); % 设置纵轴标签
title('信噪比估计值与实际值比较'); % 设置子图标题
legend('估计信噪比', '实际信噪比'); % 设置图例
hold off; % 关闭绘图保持模式
% 第二个图:估计误差与理论信噪比值关系
figure
hold on
grid on; % 显示网格线
plot(a, SNR_estimated - a,'ok-', 'linewidth', 1.1, 'markerfacecolor', [36, 169, 225]/255); % 绘制估计误差与理论信噪比之间的关系曲线
xlabel('理论信噪比值'); % 设置横轴标签
ylabel('估计误差值'); % 设置纵轴标签
legend('估计误差'); % 设置图例
title('估计误差与理论信噪比关系'); % 设置子图标题
到了这里,关于通信系统中基于matlab的BPSK信噪比检测算法及实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!