目录

  • 一、信道估计概念
  • 二、信道估计作用
  • 三、相干检测与非相干检测
    • (一)非相干检测
    • (二)相干检测
    • (三)注意
  • 四、影响信道估计算法性能的重要因素
  • 五、信道估计方法的划分
    • (一)根据处理域的不同, OFDM 信道估计有时域和频域之分
    • (二)根据利用的信道估计资源不同, OFDM 信道估计又可以分成下面三类
  • 六、 PSAM 信道估计主要包括三方面的内容
    • (一) 导频图案的选择
    • (二)导频所处位置信道响应的估计
      • 1. 小二乘算法(Least Squares,LS)
      • 2. 离散傅里叶算法(Discrete Fourier Transform,DFT)
      • 3. 离散余弦变换算法(Discrete Cosine Transform,DCT)
      • 4. 最小均方算法(Least Mean Square Algorithm,LMS)
      • 5. 线性最小均方误差估计(Linear minimum mean square error,LMMSE)
    • (三) 基于内插的完整信道估计
  • 七、OFDM中的实现

学习资料:OFDM原理与应用信道估计与均衡.pdf

一、信道估计概念

  • 数字信号在实际信道上传输时, 由于信道传输特性的不理想以及信道噪声的影响,接收端接收到的信号不可避免地会发生错误。为了恢复发送的数据信息,接收端需要估计出信道的特性,并对接收到的数据进行校正
  • 如果信道是线性的话,那么信道估计就是对系统冲激响应进行估计。需强调的是信道估计是信道对输入信号影响的一种数学表示,而“好”的信道估计则是使得某种估计误差最小化的估计算法。

基于小二乘信道估计的OFDM结构图

二、信道估计作用

  • 信道估计的目的就是估计信道的时域或频域响应,对接收到的数据进行校正和恢复,以获得相干检测的性能增益(可达 3dB)
  • 相干OFDM系统的接收端使用相干检测技术,系统需要知道信道状态信息CSI(Channel State Information)以对接收信号进行信道均衡,从而信道估计成为系统接收端一个重要的环节。在具有多个发射天线的系统中,如果系统发射端使用了空时编码,接收端进行空时译码时,需要知道每一对发射天线与接收天线之间的CSI。而CSI可以通过信道估计获得。

三、相干检测与非相干检测

(一)非相干检测

  1. 非相干检测利用差分调制技术实现。差分检测比较相邻两个信号的相位和幅度的差值。
  2. 非相干OFDM:
    如果发射端使用差分编码,传输的信息调制到子载波间的变化中,接收端可以使用不需要信道状态信息CSI(Channel State Information)便能够完成解调的非相干差分解调技术,系统接收端可以得到一定的简化。
    这种方法的最大优点是接收端不需要知道CSI,因此接收机比较简单。其缺点是与相干OFDM系统相比,系统的传输性能要降低3-4dB。

(二)相干检测

  1. 相干检测通过信道估计得到 OFDM 符号子载波的绝对参考相位和幅度。
  2. 相干OFDM:
    相干OFDM系统发射端可以使用频谱效率更高的QAM技术。相干OFDM系统的接收端使用相干检测技术,系统需要知道CSI以对接收信号进行信道均衡,从而信道估计成为系统接收端一个重要的环节。
    虽然相干OFDM系统需要知道CSI才能解调而使接收机变得复杂,但获得了更好的系统传输效率和性能,所以,在无线通信应用中,通信系统还是使用相干OFDM系统。

(三)注意

  • 非相干检测不需要信道估计,因此也没有导频开销。
  • 相干检测的性能要优于非相干检测( 3dB),因为相干检测利用训练序列估计参考相位和幅度,不受(发送波形)相位改变的影响。
  • 差分检测方法比较适合于较低传输速率的 OFDM 系统,而对于要求更高的传输速率和频谱效率的 OFDM 系统,相干检测更合适。

四、影响信道估计算法性能的重要因素

  1. 信道的最大时延
  2. 用户的移动速度
  3. 接收机的噪声
  4. 导频插入方式

五、信道估计方法的划分

(一)根据处理域的不同, OFDM 信道估计有时域和频域之分

  1. 时域估计方法:在 FFT 之前进行,估计信道的冲激响应;
  2. 频域估计方法:在 FFT 之后进行,估计信道的频率响应;
  3. 时域和频域联合估计:充分挖掘信号时域处理和频域处理各自的优点。

(二)根据利用的信道估计资源不同, OFDM 信道估计又可以分成下面三类

  1. 基于判决的信道估计( decision direct)
  2. 导频辅助信道估计( pilot symbol assisted modulation, PSAM)信道估计。以下将会详细介绍此类。
  3. 盲/半盲信道估计。

六、 PSAM 信道估计主要包括三方面的内容

(一) 导频图案的选择

PSAM 信道估计主要依靠插入在数据流当中的导频信号来完成对信道响应的估计,所以导频信号设置方式的选择对于信道估计( 甚至整个系统)的性能将会有非常大的影响。
以下三种排布方式:梳状、块状、分散

(二)导频所处位置信道响应的估计

1. 小二乘算法(Least Squares,LS)

  • LS 算法是最简单的信道估计方法,它无法消除噪声的影响,误差较大。
  • 只需要知道发送的导频信号 XP 和接收到的导频符号 YP 即可 ,这种方法也是 OFDM 系统基于导频的信道估计算法的基础。

2. 离散傅里叶算法(Discrete Fourier Transform,DFT)

  • 基于 DFT的信道估计算法是在 LS 信道估计算法基础上进行的改进, 它将估计到的信道频域响应通过离散傅里叶逆变换(Inverse Discrete Fourier Transform, IDFT)变换到时域上进行去噪处理, 再变换回频域, 该算法性能好于LS 算法,运算复杂度较低。

  • 但基于 IDFT/DFT 的信道估计算法通常要求在所有载波和保护带中的导频都是均匀排列的,但在通常的 OFDM 系统中,保护带不会放置导频,且当信道同步定时不是很理想时,会出现采样不匹配的情况。

3. 离散余弦变换算法(Discrete Cosine Transform,DCT)

离散余弦变换(DCT)与 DFT 变换相比,将信号能量主要集中在低频部分,有效抑制能量泄漏;同时由于 DCT 变换只涉及到实数运算,它比 DFT 更加迅捷,因而本文将探讨把DCT 引入到信道估计中。

4. 最小均方算法(Least Mean Square Algorithm,LMS)

  • 概念:最小均方算法,简称LMS算法,是一种最陡下降算法的改进算法, 是在维纳滤波理论上运用速下降法后的优化延伸,最早是由 Widrow 和 Hoff 提出来的。 该算法不需要已知输入信号和期望信号的统计特征,“当前时刻”的权系数是通过“上一 时刻”权系数再加上一个负均方误差梯度的比例项求得。 其具有计算复杂程度低、在信号为平稳信号的环境中收敛性好、其期望值无偏地收敛到维纳解和利用有限精度实现算法时的平稳性等特性,使LMS算法成为自适应算法中稳定性最好、应用最广的算法。
  • 算法思想:主要在增加很少运算量的情况下能够加速其收敛速度,这样在自适应均衡的时候就可以很快的跟踪到信道的参数,减少了训练序列的发送时间,从而提高了信道的利用率

5. 线性最小均方误差估计(Linear minimum mean square error,LMMSE)

具体参考论文:OFDMA系统中基于LMMSE信道估计算法的改进及其性能分析

  • LMMSE 信道估计是最优的线性估计器[2~5] , 它本质是用信道的自相关矩阵对 LS 信道估计进行修正 , 抑制噪声对估计值的影响. 采用 LMMSE 算法精度高 ,估计性能好 ,但是需要利用每条子路径的功率及延迟等先验知识构造一个信道自相关矩阵 ,运算量较大且在实际系
    统中不易获得。
  • LMMSE 算法对于子载波间干扰和高斯白噪声有很好的抑制作用,其效果好于 LS 算法,但 LMMSE 算法需要知道信道的先验知识,且其运算复杂度较高。

(三) 基于内插的完整信道估计

  1. 维纳滤波方法
  2. 线性内插
  3. 高斯内插
  4. Cubic 内插
  5. 拉格朗日内插

七、OFDM中的实现

以下是OFDM中使用LS算法和DFT算法进行信道估计的实现

clear all;
close all;
fprintf('OFDM信道估计仿真\n\n');
carrier_count=64;%-----------载波数目
num_symbol=50;%--------------OFDM符号个数
Guard=8;%--------------------循环前缀
pilot_Inter=8;%--------------导频间隔
modulation_mode=16;%---------调制方式
SNR=[0:2:20];%-------------信噪比取值
NumLoop=15;%-----------------循环次数
num_bit_err=zeros(length(SNR),NumLoop);
num_bit_err_dft=zeros(length(SNR),NumLoop);
num_bit_err_ls=zeros(length(SNR),NumLoop);
MSE=zeros(length(SNR),NumLoop);
MSE1=zeros(length(SNR),NumLoop);
MSE2=zeros(length(SNR),NumLoop);
%%%%%%%%%%%%%%%%%%%%%%%主程序循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for c1=1:length(SNR)fprintf('\n\n\n仿真信噪比为%f\n\n',SNR(c1));for num1=1:NumLoop%---------------产生发送的随机序列——————————————-BitsLen=carrier_count*num_symbol;BitsTx=randi([0 1],1,BitsLen);%---------------符号调制---------------------------------------Modulated_Sequence=qammod(BitsTx,modulation_mode);%---------------导频格式---------------------------------------pilot_len=carrier_count;pilot_symbols=round(rand(1,pilot_len));for i=1:pilot_lenif pilot_symbols(1,i)==0pilot_symbols(1,i)=pilot_symbols(1,i)-1;elsepilot_symbols(1,i)=pilot_symbols(1,i);endendpilot_symbols=pilot_symbols';%----------------计算导频和数据数目----------------------------num_pilot=ceil(num_symbol/pilot_Inter);if rem(num_symbol,pilot_Inter)==0num_pilot=num_pilot+1;endnum_data=num_symbol+num_pilot;%----------------导频位置计算----------------------------------pilot_Indx=zeros(1,num_pilot);Data_Indx=zeros(1,num_pilot*(pilot_Inter+1));for i=1:num_pilot-1pilot_Indx(1,i)=(i-1)*(pilot_Inter+1)+1;endpilot_Indx(1,num_pilot)=num_data;for j=0:num_pilotData_Indx(1,(1+j*pilot_Inter):(j+1)*pilot_Inter)=(2+j*(pilot_Inter+1)):((j+1)*(pilot_Inter+1));endData_Indx=Data_Indx(1,1:num_symbol);%----------------导频插入-------------------------------------piloted_ofdm_syms=zeros(carrier_count,num_data);piloted_ofdm_syms(:,Data_Indx)=reshape(Modulated_Sequence,carrier_count,num_symbol);piloted_ofdm_syms(:,pilot_Indx)=repmat(pilot_symbols,1,num_pilot);%----------------IFFT变换———————————————————time_signal=sqrt(carrier_count)*ifft(piloted_ofdm_syms);%----------------加循环前缀------------------------------------add_cyclic_signal=[time_signal((carrier_count-Guard+1:carrier_count),:);time_signal];Tx_data_trans=reshape(add_cyclic_signal,1,(carrier_count+Guard)*num_data);%----------------信道处理--------------------------------------Tx_signal_power=sum(abs(Tx_data_trans(:)).^2)/length(Tx_data_trans(:));noise_var=Tx_signal_power/(10^(SNR(c1)/10));Rx_data=awgn(Tx_data_trans,SNR(c1),'measured');%----------------信号接收、去循环前缀、FFT变换-----------------Rx_signal=reshape(Rx_data,(carrier_count+Guard),num_data);Rx_signal_matrix=zeros(carrier_count,num_data);Rx_signal_matrix=Rx_signal(Guard+1:end,:);Rx_carriers=fft(Rx_signal_matrix)/sqrt(carrier_count);%----------------导频和数据提取--------------------------------Rx_pilot=Rx_carriers(:,pilot_Indx);Rx_fre_data=Rx_carriers(:,Data_Indx);%----------------导频位置信道响应LS估计------------------------pilot_patt=repmat(pilot_symbols,1,num_pilot);pilot_esti=Rx_pilot./pilot_patt;%----------------LS估计的线性插值———————————————int_len=pilot_Indx;len=1:num_data;for ii=1:carrier_countchannel_H_ls(ii,:)=interp1(int_len,pilot_esti(ii,1:(num_pilot)),len,'linear');endchannel_H_data_ls=channel_H_ls(:,Data_Indx);%----------------LS估计中发送数据的估计值----------------------Tx_data_estimate_ls=Rx_fre_data.*conj(channel_H_data_ls)./(abs(channel_H_data_ls).^2);%----------------DFT估计--------------------------------------Tx_pilot_estimate_ifft=ifft(pilot_esti);padding_zero=zeros(1024,7);Tx_pilot_estimate_ifft_padding_zero=[Tx_pilot_estimate_ifft;padding_zero];Tx_pilot_estimate_dft=fft(Tx_pilot_estimate_ifft_padding_zero);%----------------DFT估计的线性插值———————————————int_len=pilot_Indx;len=1:num_data;for ii=1:carrier_countchannel_H_dft(ii,:)=interp1(int_len,Tx_pilot_estimate_dft(ii,1:(num_pilot)),len,'linear');endchannel_H_data_dft=channel_H_dft(:,Data_Indx);%----------------DFT估计中发送数据的估计值----------------------Tx_data_estimate_dft=Rx_fre_data.*conj(channel_H_data_dft)./(abs(channel_H_data_dft).^2);%----------------DFT符号解调------------------------------------demod_in_dft=Tx_data_estimate_dft(:).';demod_out_dft=qamdemod(demod_in_dft,modulation_mode);%----------------LS符号解调------------------------------------demod_in_ls=Tx_data_estimate_ls(:).';demod_out_ls=qamdemod(demod_in_ls,modulation_mode);%----------------误码率的计算----------------------------------for i=1:length(BitsTx)if demod_out_dft(i)~=BitsTx(i)num_bit_err_dft(c1,num1)=num_bit_err_dft(c1,num1)+1;endif demod_out_ls(i)~=BitsTx(i)num_bit_err_ls(c1,num1)=num_bit_err_ls(c1,num1)+1;endendend
end
BER_dft=mean(num_bit_err_dft.')/length(BitsTx);
BER_ls=mean(num_bit_err_ls.')/length(BitsTx);
%%%%%%%%%%%%%%%%%%%a%%%%%%%%主程序循环换结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure
semilogy(SNR,BER_dft,'-mp',SNR,BER_ls,'-k+');
title('OFDM系统的LS和DFT信道估计');
xlabel('SNR'),ylabel('BER')legend('LS信道估计','DFT信道估计');

运行结果如下:

【学习笔记】OFDM中信道估计技术分析与实现相关推荐

  1. 认识LTE(六): LTE中的信道特征以及信道估计技术

    认识LTE(六): LTE中的信道特征以及信道估计技术 文章目录 认识LTE(六): LTE中的信道特征以及信道估计技术 零.代码地址 一.LTE中的信道特征 1.信道的输入输出 2.LTE 特征信道 ...

  2. mysql中10049是什么错误_【学习笔记】Oracle数据库10049用于分析SQL解析笔记案例

    [学习笔记]Oracle数据库10049用于分析SQL解析笔记案例 时间:2016-11-05 13:54   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 Oracle研究 ...

  3. 低信噪比MIMO SC-FDE系统中信道估计的研究与实现

    单载波频域均衡(SC-FDE技术是一种新型的宽带无线通信技术,它结合了单载波传输和正交频分复用(OFDM)的优点,具有抗衰落能力强.传输可靠的特点. 信道估计技术作为MIMO SC-FDE系统中的关键 ...

  4. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

  5. Windows事件等待学习笔记(三)—— WaitForSingleObject函数分析

    Windows事件等待学习笔记(三)-- WaitForSingleObject函数分析 要点回顾 WaitForSingleObject NtWaitForSingleObject KeWaitFo ...

  6. VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程.

    VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程. 2013-02-20 1.数据库访问技术 a.JET与DAO JET(Joint Engine Technology)数 ...

  7. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  8. USB学习笔记(3)HID应用分析

    USB学习笔记(3)HID应用分析 本文根据前面对USB系统的了解,和USB协议的学习,列出鼠标,键盘,多媒体控制器,自定义HID设备等HID设备的各种描述符. 前景提要:每个设备有且仅有一个设备描述 ...

  9. AD学习笔记(四)PCB布局分析

    文章目录 AD学习笔记 第四讲 PCB布局分析 一.PCB导入以及常见报错解决方法 二.常见绿色报错的消除 三.PCB板框的评估及叠层设计 四.快捷键设置及推荐 五.PCB布局注意事项 AD学习笔记 ...

最新文章

  1. 服务器架设笔记——编译Apache及其插件
  2. C# WebRequest 基础连接已关闭 连接意外关闭
  3. Python数据类型中的字典-创建和基本操作
  4. Lucene6去掉了Filter但是可以用BooleanQuery实现Filter查询
  5. css pointer-event
  6. 里面不仅有强悍的zhajinhuaplayer
  7. 单进程服务器(python版)
  8. 读《现代软件工程--构建之法》所思
  9. Unity3D游戏开发之换装系统的实现
  10. 实验三 交换机的配置
  11. Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
  12. 【译】eBPF 概述:第 4 部分:在嵌入式系统运行
  13. Prometheus(3)Prometheus界面概述、监控服务功能实现
  14. 【解决方法汇总】SpringBoot项目报错 Could not resolve placeholder ‘‘ in value “${}“
  15. 那是计算机房吗英语否定回答,【微课+教材+听力+知识点】PEP四年级英语下册 Unit 1...
  16. 在线播放器代码大全(avi/mpg/rm/wmv/)
  17. 【单片机项目】制作一辆基于STM32的智能小车——概述
  18. java 画数学函数图
  19. 二极管反向恢复时间电脑程控测试系统(智能识别示波器曲线)
  20. 第一篇CSDN博客 python爬虫豆瓣排名前250的电影

热门文章

  1. Rasa使用指南01
  2. bootbox.js实践总结(一)
  3. 联合索引,组合索引,详细应用实例
  4. ubuntu下开启/禁用笔记本触摸板
  5. 叮咚小区官网新闻已不更新
  6. 再谈SQL-to-SQL翻译器
  7. C/C++ 项目必读:代码格式化和静态分析检查的一站式工作流 Cpp Linter
  8. appium重启报错:Could not proxy command to the remote server. Original error: socket hang up
  9. 张俊红 python_我的朋友张俊红成长之路
  10. css3 3D立体相册实现