第三章 LLR(对数似然比)知识点补充

Q1:“似然”概念解析:

知乎上很多大神解释,个人学习总结了一下。”似然”与“概率“两个概念是相对的。

概率:已知概率模型,推测某个事件发生的概率;

似然:根据已得到的数据集合,推测符合的概率模型;

举个例子,下图是根据一组数据画出的概率密度曲线,你觉得这组数据符合什么概率分布?一眼看上去符合高斯分布。

这种推导过程对似然函数求解过程。根据已有的数据,推测该组数据符合的概率模型。

Q2:先验概率和后验概率

先验概率:根据字面记忆,先有的经验,推导事件发生概率;

后验概率:某个事件已发生,推导导致这个事件发生的各种原因的概率大小;

如何LLR概念对应起来呢?

举个不恰当的例子,假设发射机发射一个离散QPSK调制信号,信号经AWGN信道至接收机,采样后得到 r = 0.2 + 0.2i;

QPSK解调的目的,就是推导出发送端发出的原始调制符号,下图四个角上为标准调制信号。经过信道后,信号可能劣化,接收端可能接收到比较差的信号,LLR的目的根据接收到的信号,判断发送端发的是哪个调制信号的可能性大,可能性越大,判定的结果越可靠。LLR推导过程,还是有很多资料的。LLR最终在DSP上实现,是优化的、工程可实现的形式。

以QPSK为例,接收的信号若实部real(r) > 0,D0 = 0,反之 D0 = 1;虚部 imag(r) > 0,D1 = 0 ,反之D1 = 1;

​%% Constants
clc;clear;close all;
FRM=2048;
Trellis=poly2trellis(4, [13 15], 13);
Indices=randperm(FRM);
MaxNumErrs=200;MaxNumBits=1e7;
EbNo_vector=0:10;BER_vector=zeros(size(EbNo_vector));
%% Initializations
Modulator      = comm.QPSKModulator('BitInput',true);
AWGN             = comm.AWGNChannel;
DeModulator =  comm.QPSKDemodulator('BitOutput',true,...
    'DecisionMethod','Log-likelihood ratio',...
    'VarianceSource', 'Input port');
BitError           = comm.ErrorRate;
TurboEncoder=comm.TurboEncoder(...
    'TrellisStructure',Trellis,...
    'InterleaverIndices',Indices);
TurboDecoder=comm.TurboDecoder(...
    'TrellisStructure',Trellis,...
    'InterleaverIndices',Indices,...
    'NumIterations',6);
%% Outer Loop computing Bit-error rate as a function of EbNo
% for EbNo = EbNo_vector
%     snr = EbNo + 10*log10(2);
    snr = 10;
    noise_var = 10.^(-snr/10);
    AWGN.EbNo=snr;
    numErrs = 0; numBits = 0;results=zeros(3,1);
    %% Inner loop modeling transmitter, channel model and receiver for each EbNo
%     while ((numErrs < MaxNumErrs) && (numBits < MaxNumBits))  
        % Transmitter
        u             = randi([0 1], FRM,1);                  % Generate random bits
%         encoded      = TurboEncoder.step(u);                                   % Turbo Encoder
        mod_sig = step(Modulator,   u);                % QPSK Modulator
               
        scatterplot(mod_sig); 
        % Channel
        rx_sig  = step(AWGN,        mod_sig);        % AWGN channel
%         rx_sig = awgn(mod_sig,20,'measured');
        % Receiver

        
        scatterplot(rx_sig); 
        
        %%%%%% QPSK LLR优化后实现%%%%%%%%
        len = length(rx_sig);
        
        for i=1:len
            D0 = real(rx_sig(i));
            D1 = imag(rx_sig(i));
            
            llr_test(2*i-1:2*i) = [D1 D0];
            
        end
        llr_test = llr_test.';
        
        llr        =  DeModulator.step(rx_sig,noise_var);      % QPSK Demodulator
        y            = sign(-llr);
%         y            = sign(-llr_test);
        y(find(y == -1)) = 0;
        results        = BitError.step(u, y);                       % Update BER

        numErrs = results(2);
        numBits = results(3);
%     end
    % Compute BER
    ber = results(1); bits= results(3);
    %% Clean up & collect results
    reset(BitError);
    BER_vector(EbNo+1)=ber;
% end​

 

 

 

 

 

  • 22
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值