单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

时间:2023-01-25 07:20:08

1.算法描述 频域均衡是从校正系统的频率特性出发,利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性,使包括可调滤波器在内的基带系统的总特性接近无失真传输条件。频域均衡是在频域上进行的,频域均衡的基本思路是利用了幅度均衡器和相位均衡器来补偿传输系统幅频特性和相频特性的不理想,以达到所要求的理想形成波形,从而消除码间干扰。

单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

频域均衡实现结构如下:

单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

(1)首先产生随机的二进制序列,把二进制数字序列中每两个比特分成一组映射为QPSK,QPSK在不加任何噪声和信道下完成接收端的时域判决,获得接受信号,完成系统的初步构建。

(2)在该系统中,加入加性高斯白噪声,分析系统的误码率性能,并与理论误码率性能相比较,进一步完善系统的构建。

(3)在该系统的基础上加入多径瑞利衰落信道,分析高斯白噪声信道及衰落信道中误码率性能。

(4)接着在数据发送端加入循环前缀(独特字UW),数据帧和UW进行数据重组,以保证离散时间信号在时域的圆周卷积等于频域的乘积以及用作信道的估计。

(5)在相同条件下,用ZF均衡和LMMSE均衡算法对SC-FDE系统的仿真与误码性能分析。

(6)在相同条件下,用线性LS及MMSE信道估计技术对SC-FDE系统的仿真与误码性能分析

SC-FDE流程图 单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

   信道估计的线性最小均方误差LMMSE均方误差低于最小二乘法LS,信道估计精度更高,但是缺点是实现复杂。
   频域均衡的最小均方误差准则MMSE的误码率要低于迫零均衡ZF。这是由于迫零均衡ZF接收端在对有用信号的均衡的同时也会对噪声信号进行放大,大大降低了整个通信系统的可靠性,而对于最小均方误差准则MMSE,它充分考虑了噪声对信号的影响,从多方面考虑了对有用信号的均衡。尤其在信噪比低的情况下,最小均方误差准则MMSE的优势尤为明显,误码率远低于迫零均衡ZF。
   实现了要求对单载波频域均衡系统中映射/解映射、DFT/IDFT 变换、信道估计和信道均衡等基带数字信号处理技术进行深入研究并对收发各个模块进行设计,从整个SC-FDE系统上分析基带性能。
    本发明实施例提供一种单载波MMSE频域均衡方法,接收机及发射机,其中方法包括:接收数据帧,所述数据帧包括复包络相反的第一导频数据和第二导频数据;基于所述第一导频数据和所述第二导频数据之和,确定平均噪声功率;基于所述第一导频数据和所述第二导频数据之差,确定信道频域特性参数;基于所述平均噪声功率和所述信道频域特性参数,进行单载波MMSE频域均衡处理.

2.仿真效果预览 matlab2022a仿真结果如下:

单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

3.MATLAB核心程序

%channel -> AWGN channel -> 去除CP -> FDE -> QPSK解调 -> 矩阵去交织 -> Viterbi译码
 
 
    idx  = idx+1;
    %SC-FDE        
    for ii = 1:1:FrameNum
        [SNR,ii]
        %生成发射信号、卷积码、矩阵交织器和QPSK调制器
        BitsTranstmp  = round(rand(1,FrameSize));
        conv_out      = convenc( BitsTranstmp,trel );
        interleav_out = interleaving( conv_out,interleave_table );
        QPSK_out      = psk( interleav_out,2 );
 
        %insetting pilot -> insetting CP
        Signal_Tx     = [UW_Ge,QPSK_out,UW_Ge]; 
 
        %通过信道
        Signal_Rx     = awgn( Signal_Tx,SNR,'measured');
 
        %Deleting CP -> MMSE_FDE    
 
        FDE_in        = Signal_Rx(1,1:(size(Signal_Rx,2)-UW_Num));
        FDE_out       = MMSE_FDE(FDE_in,UW_Ge);
 
        %Viterbi
        deqpsk_out      = de_qpsk( FDE_out );
        deinterleav_out = de_interleaving( deqpsk_out,interleave_table );
        viterbi_out     = vitdec( deinterleav_out,trel,tblen,'cont','hard' );  
 
        %BER                   
        decoded         = viterbi_out(tblen+1:end);
        msg             = BitsTranstmp(1:end-tblen);
        [n,r] = biterr( decoded,msg );
        BER_arry(idx,ii) = r;
    end
 A76