【问题标题】:BPSK modulation and SNR : MatlabBPSK调制和信噪比:Matlab
【发布时间】:2018-01-04 01:22:58
【问题描述】:

考虑一个加性高斯白噪声 (AWGN) 通信信道,其中正在传输从 BPSK 调制中获取值的信号。然后,接收到的噪声信号是:y[k] = s[k] + w[k],其中s[k] 是+1,-1 符号,w[k] 是零均值高斯白噪声。

-- 我想估计信号s 并通过从 0:40 dB 改变 SNR 来评估性能。假设估计信号为hat_s

因此,此图表将在 X 轴上显示 SNR 范围,在 Y 轴上显示已知信号值与估计值之间的均方误差,即s[k] - hat_s[k]

问题 1:如何定义信噪比? SNR 的公式是sigma^2/sigma^2_w。我对分子中的术语感到困惑:通常考虑的信号方差 sigma^2 是多少?

问题2:但是,我不知道噪声的方差值是多少,那么如何添加噪声?

这就是我所做的。

N = 100; %number of samples
s = 2*round(rand(N,1))-1;
 %bpsk modulation
y = awgn(s,10,'measured'); %adding noise but I don't know
the variance of the signal and noise 

%estimation using least squares

hat_s = y./s;


 mse_s = ((s-hat_s).^2)/N;

请纠正我哪里错了。谢谢。

【问题讨论】:

    标签: matlab signal-processing digital modulation


    【解决方案1】:

    首先,我认为了解我们拥有 BPSK 系统的内容是很重要的:

    BPSK 系统的星座是 [-A , A] 在这种情况下是 [-1,1] 信噪比从 0 分贝到 40 分贝不等

    我认为答案就在这个函数中:

    y = awgn( ... );来自 matlab 中心:

    y = awgn(x,snr) 将高斯白噪声添加到矢量信号 x。这 标量 snr 指定每个样本的信噪比,以 dB 为单位。如果 x 是复杂的,awgn 添加了复杂的噪声。此语法假定 x 的功率为 0 dBW。

    y = awgn(x,snr,sigpower) 与上面的语法相同,除了 sigpower 是 x 的功率,单位为 dBW。

    y = awgn(x,snr,'measured') 与 y = awgn(x,snr) 相同,除了 awgn 在添加噪声之前测量 x 的幂。

    你使用 y = awgn(x,snr,'measured'),所以你不用担心,因为 matlab 为你承载了一切,测量信号的功率,然后用方差应用到通道噪声需要获得该 SNR 比率。

    让我们看看这是怎么发生的

    SNRbit = Eb/No = A^2/No = dmin^2 /4N0
    
    the constelation [A,-A] in this case is [-1,1] so
    
    10 log10(A^2/N0) = 10 log10(1/N0) = SNRbitdb
    
    SNRlineal = 10^(0.1*SNRdb)
    

    这样:

    noise_var=0.5/(EbN0_lin); % s^2=N0/2
    

    信号会是这样的

    y = s + sqrt(noise_var)*randn(1,size);
    

    所以在你的情况下,我会像你一样生成信号:

    >> N = 100; %number of samples
    >> s = 2*round(rand(N,1))-1; %bpsk modulation
    

    然后准备一个从 0 到 40 db 的 SNR

    >> SNR_DB = 0:1:40;
    

    然后计算所有可能的信号:

    >> y = zeros(100,length(SNR_DB));
    
    >> for i = 1:41
    y(:,i) = awgn(s,SNR_DB(i),'measured');
    end
    

    此时,查看信号的最佳方法是使用这样的星座图:

    >> scatterplot(y(:,1));
    >> scatterplot(y(:,41));
    

    您可以看到 0 db 噪声与信号功率相等的不良信号和大于 40 db 噪声的非常好的信号信号。 Eb/No = 功率信号-功率噪声分贝,所以0表示功率噪声等于信号功率,40分贝表示信号功率大于噪声功率

    然后为您绘制计算 mse,matlab 有一个函数用于此

    err = immse(X,Y) 说明

    例子

    err = immse(X,Y) 计算两者之间的均方误差 (MSE) 数组 X 和 Y。X 和 Y 可以是任意维度的数组,但必须是 相同的大小和类别。

    这样:

    >> for i = 1:41
    err(i) = immse(s,y(:,i));
    end
    >> stem(SNR_DB,err)
    

    对于绘图,由于我们在 db 中工作,因此使用对数轴应该更好

    【讨论】:

    • 感谢您的回答以及情节,但很少有事情不清楚。你能澄清一下吗? (1) 由于awgn 处理了信号噪声部分,因此大多数时候从研究文章中不清楚什么是噪声方差和信号方差。在写论文时,我也需要提到这一点,因此我提出了这个问题。请问理论上应该写的信号和噪声的方差是多少?(2)我不明白公式A^2=1中的th值是怎么来的
    • 我更正了问题(2)的公式,你在哪里它是不准确的。对于第一个问题,据我所知,这里重要的是信号的每比特能量和噪声的方差。
    • 抱歉听起来很吵。我无法理解dmin^2 /4N0 是什么,也找不到任何参考您如何获得此值和noise_var=0.5/(EbN0_lin); % s^2=N0/2`。您能否解释/提供参考您如何获得此值。感谢您的时间和精力。
    • 嗨,别担心,我喜欢数字调制,这里有一个很好的总结users.ecs.soton.ac.uk/sqc/ELEC6214/AWCNS-L7.pdf,定义是相量星座点之间的最小距离(dmin),这是该方案的抗噪能力。所以在这种情况下很容易计算。我大学的其他概念,也许我对任何术语都不准确,但是noise_var的情况只是取方程并分离噪声
    • 感谢您的链接和跟进。我有另一个问题,我已经在这里发布了stackoverflow.com/questions/46041131/… 它是在此处提出的问题的延续。如果您能再次提供帮助,那将非常有帮助。基本上我很困惑是否应该根据 EsNo 使用 snr,或者当传输的数据以符号表示时使用 snr。如果我使用 snr 而不是 EsNo,会不会出错?你能看一下新问题吗?再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2014-02-19
    • 2014-10-31
    • 2015-05-12
    相关资源
    最近更新 更多