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

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

1.算法描述
ofdm基本结构如下所示:

image.png

    信道估计是使用接收信号表现出来的各种状态来对信道的特性进行估计的过程。信道估计是信道对输入信号影响的一种数学表示。信道估计可以定义为描述物理信道对输入信号的影响而进行定性研究的过程,是信道对输入信号影响的一种数学表示。如果信道是线性的,那么信道估计就是对系统冲激响应进行估计。信道估计的目标就是使某种估计误差最小化,同时还要尽量降低算法的复杂度,并具有可实现性。为了在接收端能够准确地恢复发射信号,需要对信道的冲激响应进行估计,这就是信道估计。
   OFDM系统常常使用插入导频的方法来进行信道估计。我们都知道OFDM系统是在同一个时刻同时发送多个不同频率的子载波,一次性发送若干个子载波算是发送了一个OFDM符号,然后再隔一定的时间再发送下一个OFDM符号。根据导频插入的不同方式我们可以分为块状导频和梳状导频。 

LS:Least Square

     该算法计算简单、复杂度低,不需要信道的任何先验统计特性。该方法导频处信道频域响应(CFR)通过LS算法估计得到,数据符号处CFR通过插值方法获得。然而,由于LS估计方法不能消除导频处噪声的影响,并且插值类信道估计方法不能有效消除由于多径引起的频域选择兴衰落信道的影响,导致数据处CFR获取不准确,因此LS算法的估计性能较差。

假设发射信号是X(i),信道传输函数是H(i),接收端接收到的信号是Y(i),那么就有这个等式Y(i)=X(i)H(i)。

   信道估计中的LS算法是最基本且常用的算法,用最朴实的话说就是忽略噪声,直接除。其公式表示为H(i)=Y(i)/X(i)。频域接收信号导频位置Y,本地已知导频X。两者简单相除,就可以得到导频位置的信道估计值H(i)。
   在硬件实现时,除了在均衡时可以考虑用除法器,其他位置(包括此处的LS算法)都不要使用除法器,除法器占用的资源太多,将除法表示为乘法即可避免,而大部分的乘法可以用移位相加来实现,这样可以大大降低复杂度。

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

image.png

3.MATLAB核心程序

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=[];
相关文章
|
4月前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
4月前
|
编解码 算法 自动驾驶
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
【雷达通信】用于集成传感和通信的OFDM雷达传感算法(Matlab代码实现)
487 125
|
5月前
|
算法 数据安全/隐私保护
基于PSO粒子群优化算法的256QAM星座图的最优概率整形matlab仿真,对比PSO优化前后整形星座图和误码率
本项目基于MATLAB 2022a仿真256QAM系统,采用概率星座整形(PCS)技术优化星座点分布,结合粒子群优化(PSO)算法搜索最优整形因子v,降低误码率,提升传输性能。核心程序包含完整优化流程。
169 0
|
3月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
223 8
|
6月前
|
算法 数据安全/隐私保护
基于OFDM的无人机中继通信链路matlab误码率仿真
本资源包含OFDM算法在无人机中继通信中的仿真与实现,涵盖调制解调原理、循环前缀作用及中继功率、飞行高度对通信性能的影响。配套Matlab程序(2024b/2022a),含详细注释与操作视频,完整运行无水印。
|
3月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
386 0
|
3月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
173 0
|
3月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
145 0
|
3月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
146 0
|
3月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
210 8

热门文章

最新文章