您现在的位置:首页 >> 通信 >> 内容

基于LS最小二乘法的OFDM信道估计误码率matlab仿真

时间:2022/12/27 17:31:31 点击:

  核心提示:A151包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5uTmJ5r

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

        信道估计是使用接收信号表现出来的各种状态来对信道的特性进行估计的过程。信道估计是信道对输入信号影响的一种数学表示。信道估计可以定义为描述物理信道对输入信号的影响而进行定性研究的过程,是信道对输入信号影响的一种数学表示。如果信道是线性的,那么信道估计就是对系统冲激响应进行估计。信道估计的目标就是使某种估计误差最小化,同时还要尽量降低算法的复杂度,并具有可实现性。为了在接收端能够准确地恢复发射信号,需要对信道的冲激响应进行估计,这就是信道估计。

       OFDM系统常常使用插入导频的方法来进行信道估计。我们都知道OFDM系统是在同一个时刻同时发送多个不同频率的子载波,一次性发送若干个子载波算是发送了一个OFDM符号,然后再隔一定的时间再发送下一个OFDM符号。根据导频插入的不同方式我们可以分为块状导频和梳状导频。 

4.部分源码

.......................................................

%---------------------------------------------------------------

%----------------------------------------------------------------

%加高斯白噪声

Error_ber=[];%误比特率

Error_ber1=[];

Error_ber2=[];%误比特率

Error_ber3=[];

%Error_ser=[];%误符号率

for snr_db=0:snr:N_snr

 

    code_power=0;

    code_power=[norm(Tx_data)]^2/(length(Tx_data));%信号的符号功率

    %bit_power=var(Tx_data);

    bit_power=code_power/bits_per_symbol;%比特功率 

    noise_power=10*log10((bit_power/(10^(snr_db/10))));%噪声功率

    noise=wgn(1,length(Tx_data),noise_power,'complex');%产生GAUSS白噪声信号

    

    Y7=Tx_data+noise;

 

%-------------------------------------------------------

  %串并变换

   Y6=reshape(Y7,IFFT_bin_length+GI,symbols_per_carrier).';

   

  %去保护间隔

    for k=1:symbols_per_carrier;

       for i=1:IFFT_bin_length;

           Y5(k,i)=Y6(k,i+GI);

       end

    end

    %FFT,傅立叶变换

     Y4=fft(Y5,IFFT_bin_length,2);

     Y3=Y4(:,carriers);

 %-------------------------------------------------------------   

 %LS信道估计,%信道估计准则:最小均方误差(MMSE)最大似然估计(MLE) 最小平方(LS)

  H=[];

  Y2=Y3(:,signal);

  Rx_training_symbols=Y3(:,pilot);

  Rx_training_symbols0=reshape(Rx_training_symbols,symbols_per_carrier*Np,1);

  

  training_symbol0=reshape(training_symbols,1,symbols_per_carrier*Np);

  training_symbol1=diag(training_symbol0);

  %disp(training_symbols)

  training_symbol2=inv(training_symbol1);

  Hls=training_symbol2*Rx_training_symbols0;

  Hls1=reshape(Hls,symbols_per_carrier,Np);

  HLs=[];

  HLs1=[];

..........................................    

 A151

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168