由于宽带无线通信系统所占带宽较大,其无线信道在不同频带呈现出频率选择性衰落(即信道衰落系数在不同的频率下不同)。为了克服该问题,我们引入了了OFDM技术将系统带宽划分成N个等间隔的子载波。因为每个子载波所占带宽很小,其呈现出频谱平坦衰落(即信道衰落系数在不同的频率下相同)。 OFDM的具体介绍可以参考我之前的文章

mmdong2:OFDM(正交频分复用)技术​zhuanlan.zhihu.com

本文将介绍如何估计OFDM系统在N个子载波下的信道。

一. 导频分布

参照文档3GPP 36.211中Figure 6.2.2-1, OFDM系统中的时域和频域被划分成很多资源元素(resource elements) 如图1所示。每个resource element可以放置一个OFDM符号。OFDM符号可以是数据符号,也可以是导频符号。导频符号用来在接收端估计收发端的信道,从而在相干解调中根据估计的信道解调出数据符号。

图1 OFDM中时域和频域的划分,每个reousce element可以放置一个OFDM符号

在图1的时频资源块中,有多种放置导频的方法。参照【Chapter 6.1, 1】一般有Block Type, Comb Type, 和Lattice Type的导频放置方法。 下面的介绍和仿真中,我们将采用Comb type,如图2所示。

图2:Comb Type导频结构

二. OFDM子载波信道估计

在讲解OFDM子载波信道估计的理论时,我们先忽略Comb Type导频结构,并假设图2中的第一列都是导频信号。在第一列的N个子载波上,每个子载波承载一个OFDM符号X(0), X(2),..., X(N-1). 定义

的反离散傅里叶矩阵,则时域发送的符号为

其中

,
.

在OFDM中时域信号

被发射出去前,先对其添加长度为
循环前缀
得到

我们假设收发机的信道的channel Tap数目为

, 则CP长度

定义长度为

tap的信道
,则时域接收到的信号为

其中

表示循环卷积。 对(3)中的
去掉最前面
个元素得到
。对
做离散傅里叶变换得到频域
其为每个子载波上接收到的OFDM符号. 通过计算

其中

表示列向量中元素之间的点除。 得到的
为每个子载波上的信道。通过计算

的带估计的时域信道

三. Comb Type信道估计

如图2所示,Comb Type导频结构中,不是所有第一列的OFDM符号都为导频。 假设导频在第一列得到的子载波

. 则因为只有导频是收发双方已知的,公式(4)变成

即我们只知道导频所在子载波上的频域信道。根据离散傅里叶变换理论,这T个频域的信道是由长度为

tap的信道
计算而来的。 当导频所占子载波数目大于信道tap数目时,即
, 可以将公式(5)变成如下形式

基于此估计得到了OFDM的时域和频域信道。

四. OFDM信道估计仿真

基于以上理论,我整理了以下MATLAB仿真。仿真代码是基于别的的成果[2],在其基础上里面已经添加了足够注释,以方便读者能够读懂。

% initialize

clear

clc

% parameter definition

N = 256; % total number of subcarriers

T = 256/8; % total number of pilots in the first column

S = N-T; % totla number of data subchannels in the first column

Lcp = N/4; % length of CP

M = 2; % modulation

pilotInterval = 8; % pilot position interval

L = 16; % number of channel tap

nIteration = 500; % number of iteration in each evaluation

SNR = [0:3:27]; % signal to noise ratio vector in dB

% Pilot Location and strength

Ip = [1:pilotInterval:N]; % location of pilots

Is = setxor(1:N,Ip); % location of data

Ep = 1; % energy in pilot symbols in comparison to energy in data symbols

% ifft matrix

F = exp(2*pi*sqrt(-1)/N .* meshgrid([0:N-1],[0:N-1])...

.* repmat([0:N-1]',[1,N]));

%% Do the channel estimation

bErr = zeros(length(SNR), nIteration); % initializing bit error rate

for i = 1 : length(SNR)

snr = SNR(i)

for k = 1 : nIteration

% generating random channel coefficients

h(1:L,1) = random('Normal',0,1,L,1) + ...

j * random('Normal',0,1,L,1);

h = h./sum(abs(h)); % normalization

% Tr Data

TrDataBit = randi([0 M-1],N,1); % Each subcarrier has a symbol

TrDataMod = qammod(TrDataBit,M);

TrDataMod(Ip) = Ep * TrDataMod(Ip);

TrDataIfft = ifft(TrDataMod,N); % The frequency symbol is transformed into time domain: Equation (1)

TrDataIfftGi = [TrDataIfft(N- Lcp + 1 : N);TrDataIfft]; % Add the CP at the time domain sequence: Equation (2)

% tx Data pass through the channel: Equation (3)

TxDataIfftGi = cconv(h,TrDataIfftGi);

% adding awgn noise

TxDataIfftGiNoise = awgn(TxDataIfftGi, snr - db(std(TxDataIfftGi))); % Normalization to signal power

% process the received signal

TxDataIfft = TxDataIfftGiNoise(Lcp+1:N+Lcp); % Remove the CP at the received time domain signal

TxDataMod = fft(TxDataIfft,N); % Change the time domain to frequency domain

% Channel estimation using the pilots: Equation (6) (7)

Spilot = TrDataMod(Ip); % trnasmitted pilots

Ypilot = TxDataMod(Ip); % received pilots

hHat = (Ep * length(Ip))^-1*F(1:L,Ip)*(Ypilot./Spilot);

% Decode the data symbol

TxDataBit = qamdemod(TxDataMod./(fft(hHat,N)),M);

% bit error rate computation

[nErr, bErr(i,k)] = symerr(TxDataBit(Is),TrDataBit(Is));

end

end

%% Plot the BER

f1 = figure(1);

set(f1,'color',[1 1 1]);

semilogy(SNR,mean(bErr'),'b->')

xlabel('SNR in dB');

ylabel('Bit Error Rate')

grid on

fft 估计载波频率程序_OFDM信道估计和仿真相关推荐

  1. fft 估计载波频率程序_fft频率估计

    在高动态环境中,由于载波多普勒频移和收发端时钟漂移等因素的存在,直扩接收机必须通过载波同步才能在接收端消除频差并重构载波相位,以实现相干解调.在传统的载波同步技术中,锁频环具有较大的捕获带宽但频率跟踪 ...

  2. fft 估计载波频率程序_基于FFT载频估计和Costas环的非协作通信载波同步系统的制作方法...

    基于FFT载频估计和Costas环的非协作通信载波同步系统的制作方法 [技术领域] [0001] 本发明涉及本发明属于数字通信技术领域,特别是涉及一种通信载波同步系统. [背景技术] [0002] 在 ...

  3. fft 估计载波频率程序_载波同步算法程序 -

    5.2.1 载波频偏的捕获 A.前导序列估计 由于发送端和接收端载波频率的不同,每一个采样信号在时间t时包含一个未知的相位因素ej2??fct,这里?fc指的是未知的载波频偏.这个未知的相位因素在接收 ...

  4. fft 估计载波频率程序_一种基于扫描精确估计载波频率的方法与流程

    本发明涉及信号处理技术领域,特别涉及一种基于扫描精确估计载波频率的方法. 背景技术: 信号的载波频率估计是通信.雷达.声纳以及电子对抗等领域信号处理中的一个重要问题.基于参数模型的谱估计.最大熵谱估计 ...

  5. fft 估计载波频率程序_一种适用于MPSK解调的快速精确频率同步方法与流程

    本发明涉及MPSK信号解调的频率同步技术,特别涉及一种适用于MPSK解调的快速精确频率同步方法. 背景技术: 在无线数字通信系统中,载波频率偏移是影响系统解调性能指标的重要因素,为了降低误码率,提高通 ...

  6. fft 估计载波频率程序_一种BPSK载波频率估计综合算法.pdf

    总第193期 舰船电子工程 V01.30No.7 Electronic 87 2010年第7期 Ship Engineering 一种BPSK载波频率估计综合算法. 刘旋蒋字中任雪峰 (海军工程大学通 ...

  7. 利用卷积定理进行信道估计 + 深入探究 DFT 与 matlab 中的 fft 用法

    文章目录 1 背景 2 DFT & FFT 公式级别解析 2.1 DFT / IDFT 2.2 FFT 3 利用卷积定理进行信道估计 1 背景 最近尝试用时域卷积定理来进行信道估计 假设 TX ...

  8. m基于RBF神经网络和BP神经网络的信道估计误码率matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在无线通信系统中,从发射端发射的信号,经过直射.反射.散射等路径到达接收端.在ofdm系统中,为了获 ...

  9. m基于rbf神经网络和遗传算法优化的MIMO-OFDM系统信道估计算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 MIMO-OFDM的信道估计:时,频,空三个域都要考虑,尤其是在空域,不同天线发射的导频序列 ...

最新文章

  1. Java 性能优化的 45 个细节
  2. mysql100万数据一键下载csv_使用PHP来导入包含100万条数据的csv文件,请问你最快多久能全部导入mysql 数据库?...
  3. linux终端信息读取,linux系统 如何通过终端查看信息
  4. 经济学与计算机科学结合,理论计算机在物理学和经济学领域的重要作用
  5. synchronized的使用方法
  6. BZOJ1050 [HAOI2006]旅行
  7. java页面间面向对象的方法面试题_JAVA面向对象面试题带答案(墙裂推荐)
  8. CentOS 与 Ubuntu:哪个更适合做服务器?
  9. 《从零开始走进FPGA》导读
  10. NoSQL数据库:从故障中恢复数据的原理
  11. 在 Flink 算子中使用多线程如何保证不丢数据?
  12. 190811每日一句
  13. C# 如何调用打印机打印报表
  14. 力软新版APP上线,采用js语言,基于Vue.js和uni-app框架
  15. 百度云盘卸载不干净如何处理
  16. Python工程目录结构
  17. 使用html表单制作简单网页(加表单详细知识点)
  18. FinalShell更换背景颜色
  19. c#进行三角形周长面积计算公式_C#程序设计 输入三角形三边长,并计算的周长和面积...
  20. 透明位图Ron Gery Microsoft 网络开发技术小组

热门文章

  1. Python多分类问题下,micro-PR计算以及macro-PR计算
  2. 词频-逆向文件频率TF-IDF构建实战
  3. mysql5.0入门_MySQL 5.0基础的基本内容的介绍
  4. hadoop_入门1
  5. 实验四 数据库SQL语言基础编程
  6. linux关机 hibernate,Linux关机命令
  7. jpa 每次启动都要创建外键索引_什么情况下外键建立索引?是必须的吗
  8. TensorFlow基础12-(keras.Sequential模型以及使用Sequential模型 实现手写数字识别)
  9. linux中system清屏命令,Linux磁盘管理命令
  10. java jsch_java使用JSCH实现SFTP文件管理