当前位置:   article > 正文

通信系统中基于matlab的BPSK信噪比检测算法及实现_bpsk系统

bpsk系统

根据是否需要辅助数据,信噪比估计算法可以分为数据辅助类算法(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信号解调至基带信号,即双极性不归零信号。本文仅为演示算法,不涉及bpsk调制,解调部分

matlab参考代码如下:

  1. clear;clc;
  2. %% 参数设置
  3. global M2 M4 ;
  4. bps = 1000;% 码元速率(每秒比特数)
  5. SNRs = zeros(size(bps)); % 保存信噪比结果
  6. SNR_estimaed=[];
  7. T = 1/bps; % 符号持续时间
  8. fs =10000; % 采样频率为码元速率的50倍
  9. Ts = 1/fs; % 采样间隔
  10. Ns = T/Ts; % 每个码元的采样点数
  11. sps=2;%rcondesign,upfirdn的采样点数
  12. t=0:1/fs:T-1/fs;
  13. fc=1e3;%载波频率
  14. count=1;
  15. N=500;%二进制符号数
  16. %% 计算bps码元速率下的信噪比
  17. %% 生成BPSK信号
  18. bits = randi([0 1], 1, N); % 随机生成1000个二进制比特
  19. symbols = 2*bits - 1; % BPSK调制,映射到实数值序列
  20. upsamples = repmat(symbols, Ns, 1); % 扩展为持续时间为T的矩形波
  21. waveform = upsamples(:)'; % 将矩阵转换为向量
  22. input=waveform;
  23. % modulation=real(exp(2i*pi*fc*t));%调制函数
  24. % modulation=exp(2i*pi*fc*t);%调制函数
  25. modulation=ones(1,Ns);
  26. %% 加成形滤波器(M2M4不适合加滤波器)
  27. % rrcfilter=rcosdesign(0.5,Ns/2,sps,'sqrt');%x=10*sps+1个点升余弦滤波器
  28. % input=upfirdn(waveform,rrcfilter,sps);%y=x+(bpsk-1)*sps个点
  29. % L=Ns/2+1;%矩形滤波器长度
  30. % rectangle=rectwin(L)'/L;
  31. % input=conv(rectangle,input);
  32. %% 调制
  33. b=[];%存储bpsk调制
  34. for j=1:N
  35. start=Ns*j-Ns+1;
  36. stop=Ns*j;
  37. a=waveform(start:stop);
  38. b = [b,a.*modulation];
  39. end
  40. input=b;
  41. %% 添加高斯白噪声
  42. for x =1:30
  43. SNRdB =x-10;% 信噪比(以dB为单位)
  44. output=[,];
  45. received = awgn(input, SNRdB, 'measured'); % 添加高斯白噪声
  46. %% 加匹配滤波器 M2M4算法加滤波器将影响大信噪比时估计准确性
  47. % output=upfirdn(received,conj(fliplr(rrcfilter)),1,sps);%对rrc滤波器先反折再共轭
  48. % output=conv(received,conj(fliplr(rectangle)));
  49. % received=output;
  50. %% 使用M2M4算法计算信噪比
  51. SNR_estimated(count,x)=M2M4(received);
  52. end
  53. %% 打印结果
  54. % 生成信噪比范围
  55. a = -9:20; % 信噪比范围
  56. %% 理论信噪比的影响
  57. % 第一个图:信噪比估计值与实际值比较
  58. figure; % 创建一个新的图形窗口
  59. hold on; % 启用绘图保持模式
  60. grid on; % 显示网格线
  61. plot(a, SNR_estimated,'ok-', 'linewidth', 1.1, 'markerfacecolor', [36, 169, 225]/255); % 绘制信噪比估计值曲线
  62. plot(a, a,'ok-', 'linewidth', 1.1, 'markerfacecolor', [29, 191, 151]/255); % 绘制实际信噪比曲线
  63. xlabel('理论信噪比值'); % 设置横轴标签
  64. ylabel('估计信噪比值'); % 设置纵轴标签
  65. title('信噪比估计值与实际值比较'); % 设置子图标题
  66. legend('估计信噪比', '实际信噪比'); % 设置图例
  67. hold off; % 关闭绘图保持模式
  68. % 第二个图:估计误差与理论信噪比值关系
  69. figure
  70. hold on
  71. grid on; % 显示网格线
  72. plot(a, SNR_estimated - a,'ok-', 'linewidth', 1.1, 'markerfacecolor', [36, 169, 225]/255); % 绘制估计误差与理论信噪比之间的关系曲线
  73. xlabel('理论信噪比值'); % 设置横轴标签
  74. ylabel('估计误差值'); % 设置纵轴标签
  75. legend('估计误差'); % 设置图例
  76. title('估计误差与理论信噪比关系'); % 设置子图标题
  1. function [SNR] = M2M4(sig)
  2. if isreal(sig)==1
  3. M2 = mean(sig .* conj(sig)); % 计算接收信号的2阶矩
  4. M4 = mean(sig.^4); % 计算接收信号的4阶矩
  5. s1 = sqrt(6 * M2.^2 - 2*M4);
  6. s2 = 2*M2 -s1;
  7. SNR= 10 * log10(abs(s1 ./ s2)); % 信噪比估计
  8. else
  9. M2 = mean(sig .* conj(sig)); % 计算接收信号的2阶矩
  10. M4 = mean((sig .* conj(sig)).^2); % 计算接收信号的4阶矩
  11. s1 = sqrt(2 * M2.^2 - M4);
  12. s2 = M2 - s1;
  13. SNR= 10 * log10(abs(s1 ./ s2)); % 信噪比估计
  14. end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/742891
推荐阅读
相关标签
  

闽ICP备14008679号