在OFDM系统中,基于DFT的信道估计算法也经常被使用。DFT信道估计主要有以下几个步骤:
(1)在实载波导频处,利用已知导频符号,使用LS信道估计算法计算得到实载波导频处信道频域响应:(原理详见此处)
H^P_AC(k)=YAC(mk)XAC(mk),k=0,1,...,NP_AC−1\hat{H}_{P\_AC}(k)=\frac{Y_{AC}(mk)}{X_{AC}(mk)},k=0,1,...,N_{P\_AC}-1 H^P_AC​(k)=XAC​(mk)YAC​(mk)​,k=0,1,...,NP_AC​−1
其中,YAC(mk)Y_{AC}(mk)YAC​(mk)为实载波导频处接收频域信号,XAC(mk)X_{AC}(mk)XAC​(mk)为实载波导频处发送频域信号,ACACAC是实载波的意思,P_ACP\_ACP_AC是实导频载波。
(2) 通过 IDFT 变换获得实际导频处的信道冲击响应:
h^P_AC(n)=IDFT{H^P_AC(k)},n=0,1,...,NP_AC−1\hat{h}_{P\_AC}(n)=IDFT{\{\hat{H}_{P\_AC}(k)\}},n=0,1,...,N_{P\_AC}-1 h^P_AC​(n)=IDFT{H^P_AC​(k)},n=0,1,...,NP_AC​−1
(3) 对 CP 长度后的冲击响应进行置零,对信道冲击响应进行降噪:
hP_AC(n)={h^P_AC(n)n=0,1,...,NCP−10n=NCP,NCP+1,...,NP_AC−1h_{P\_AC}(n)= \begin{cases} \hat{h}_{P\_AC}(n) & n=0,1,...,N_{CP}-1 \\ 0 & n=N_{CP},N_{CP}+1,...,N_{P\_AC}-1 \end{cases} hP_AC​(n)={h^P_AC​(n)0​n=0,1,...,NCP​−1n=NCP​,NCP​+1,...,NP_AC​−1​
(4) 在hP_AC(n)h_{P\_AC}(n)hP_AC​(n)中进行插零得到hAC(n)h_{AC}(n)hAC​(n),插值后长度为实载波数量NACN_{AC}NAC​,再通过DFT变换,得到实载波处的频域响应HAC(k)H_{AC}(k)HAC​(k)
hP_AC(n)⟹zero_paddinghAC(n),n=0,1,...,NAC−1HAC(k)=DFT{hAC(n)},k=0,1,...,NAC−1h_{P\_AC}(n)\overset{zero\_padding}{\implies}h_{AC}(n),n=0,1,...,N_{AC}-1 \\ H_{AC}(k)=DFT\{h_{AC}(n)\},k=0,1,...,N_{AC}-1 hP_AC​(n)⟹zero_padding​hAC​(n),n=0,1,...,NAC​−1HAC​(k)=DFT{hAC​(n)},k=0,1,...,NAC​−1

经过上述步骤,即可得到DFT优化结果。
以下为实际操作例子


clc;clear all; close all; figure(1), clf, figure(2), clf
Nfft=1024;  Ng=Nfft/8;  Nofdm=Nfft+Ng;  Nsym=100;
Nps=4; Np=Nfft/Nps; Nd=Nfft-Np; % 导频间隔、每个 OFDM 符号的导频数和数据
Nbps=4; M=2^Nbps; % 每个(调制)符号的位数
Es=5; A=sqrt(3/2/(M-1)*Es); % 信号能量和 QAM 归一化因子
SNRs = 30;
for i=1:length(SNRs)SNR = SNRs(i); rand('seed',1); randn('seed',1);MSE = zeros(1,6); nose = 0;for nsym=1:NsymXp = 2*(randn(1,Np)>0)-1;    % Pilot sequence generationmsgint=randi([0,M-1],1,Nd);    % bit generationData = qammod(msgint,M)*A;%Data = modulate(mod_object, msgint); Data = modnorm(Data,'avpow',1)*Data;   % normalizationip = 0;    pilot_loc = [];for k=1:Nfftif mod(k,Nps)==1X(k) = Xp(floor(k/Nps)+1); pilot_loc = [pilot_loc k]; ip = ip+1;else       X(k) = Data(k-ip);endendx = ifft(X,Nfft);                            % IFFTxt = [x(Nfft-Ng+1:Nfft) x];                  % Add CPh = [(randn+j*randn)*3 (randn+j*randn)*0.7 (randn+j*randn)*0.2 (randn+j*randn)*0.01];     % generates a  channelH = fft(h,Nfft); channel_length = length(h); % True channel and its time-domain lengthH_power_dB = 10*log10(abs(H.*conj(H)));      % True channel power in dBy_channel = conv(xt, h);                     % Channel path (convolution)yt = awgn(y_channel,SNR,'measured');  y = yt(Ng+1:Nofdm);                   % Remove CPY = fft(y);                           % FFTfor m=1:1if m==1H_est = LS_CE(Y,Xp,pilot_loc,Nfft,Nps,'linear'); method='LS信道估计'; % LS estimation with linear interpolationelseif m==2H_est = LS_CE(Y,Xp,pilot_loc,Nfft,Nps,'spline'); method='LS-spline'; % LS estimation with spline interpolationelse  H_est = MMSE_CE(Y,Xp,pilot_loc,Nfft,Nps,h,SNR); method='MMSE'; % MMSE estimationendH_est_power_dB = 10*log10(abs(H_est.*conj(H_est)));h_est = ifft(H_est); h_DFT = h_est(1:channel_length); H_DFT = fft(h_DFT,Nfft); % DFT-based channel estimationH_DFT_power_dB = 10*log10(abs(H_DFT.*conj(H_DFT)));if nsym==1
%            figure(1), subplot(319+2*m), plot(H_power_dB,'b','linewidth',1); grid on; hold on;
%            plot(H_est_power_dB,'r+','Markersize',4,'linewidth',1);
%            title(method); xlabel('子载波编号'); ylabel('功率[dB]');
%            legend('True Channel',method);  set(gca,'fontsize',9)
%            subplot(320+2*m), plot(H_power_dB,'b','linewidth',1); grid on; hold on;
%            plot(H_DFT_power_dB,'r+','Markersize',4,'linewidth',1);
%            title([method ' with DFT']); xlabel('子载波编号'); ylabel('Power[dB]');
%            legend('True Channel',[method ' with DFT']);  set(gca,'fontsize',9)figure(1),subplot(1,2,1)plot(H_power_dB,'b','linewidth',1); grid on; hold on;plot(H_est_power_dB,'r+','Markersize',4,'linewidth',1); title(method); xlabel('子载波编号'); ylabel('功率[dB]');legend('True Channel',method);  set(gca,'fontsize',9)subplot(1,2,2)plot(H_power_dB,'b','linewidth',1); grid on; hold on;plot(H_DFT_power_dB,'r+','Markersize',4,'linewidth',1); title([method ' +  DFT']); xlabel('子载波编号'); ylabel('Power[dB]');legend('True Channel',[method ' with DFT']);  set(gca,'fontsize',9)endMSE(m) = MSE(m) + (H-H_est)*(H-H_est)';MSE(m+3) = MSE(m+3) + (H-H_DFT)*(H-H_DFT)';endY_eq = Y./H_est;Y_eqDFT = Y./H_DFT;if nsym>=Nsym-10figure(2)subplot(221), plot(X,'.','Markersize',5),title('原星座图');axis('equal'), set(gca,'fontsize',9), axis([-5 5 -5 5]),hold on,subplot(222), plot(Y,'.','Markersize',5),title('信道补偿前星座图');axis('equal'), set(gca,'fontsize',9), axis([-20 20 -20 20]),hold on,       subplot(223), plot(Y_eq,'.','Markersize',5),title('信道补偿后星座图');axis('equal'), set(gca,'fontsize',9),axis([-5 5 -5 5]), hold on,       subplot(224), plot(Y_eqDFT,'.','Markersize',5),title('信道补偿后星座图(DFT)');axis('equal'), set(gca,'fontsize',9), axis([-5 5 -5 5]),hold on,       endip = 0;for k=1:Nfftif mod(k,Nps)==1, ip=ip+1;  else  Data_extracted(k-ip)=Y_eq(k);  endendmsg_detected = qamdemod(Data_extracted/A,M);nose = nose + sum(msg_detected~=msgint);end   MSEs(i,:) = MSE/(Nfft*Nsym)
end
Number_of_symbol_errors=nose% figure(3), clf, semilogy(SNRs',MSEs(:,1),'-x', SNRs',MSEs(:,4),'-o')
% legend('LS-linear','LS_DFT')
% xlabel('SNR(dB)')
% ylable('MSE')
% legend('LS-linear','MMSE')
% fprintf('MSE of LS-linear/LS-spline/MMSE Channel Estimation = %6.4e/%6.4e/%6.4e\n',MSEs(end,1:3));
% fprintf('MSE of LS-linear/LS-spline/MMSE Channel Estimation with DFT = %6.4e/%6.4e/%6.4e\n',MSEs(end,4:6));function H_LS = LS_CE(Y,Xp,pilot_loc,Nfft,Nps,int_opt)
% LS channel estimation function
% Inputs:
%       Y         = Frequency-domain received signal
%       Xp        = Pilot signal
%       pilot_loc = Pilot location
%       N         = FFT size
%       Nps       = Pilot spacing
%       int_opt   = 'linear' or 'spline'
% output:
%       H_LS      = LS channel etimate%MIMO-OFDM Wireless Communications with MATLAB㈢   Yong Soo Cho, Jaekwon Kim, Won Young Yang and Chung G. Kang
%?2010 John Wiley & Sons (Asia) Pte LtdNp=Nfft/Nps; k=1:Np; LS_est(k) = Y(pilot_loc(k))./Xp(k);  % LS channel estimation
if  lower(int_opt(1))=='l', method='linear'; else method='spline';  end
H_LS = interpolate(LS_est,pilot_loc,Nfft,method); % Linear/Spline interpolation
endfunction [H_MMSE]= MMSE_CE(Y,Xp,pilot_loc,Nfft,Nps,h,SNR)% MMSE信道估计
%输入:
% Y 频域接收信号
% Xp 导频信号
% pilot_loc:导频位置
% Nfft  FFT大小
% Nps 导频间隔
% h 信道脉冲响应
% SNR:信噪比[dB]
%输出:
% H_MMSE :MMSE信道估计
snr = 10^(SNR*0.1);
Np=Nfft/Nps; k=1:Np; H_tilde = Y(1,pilot_loc(k))./Xp(k);  % LS estimate
k=0:length(h)-1; %k_ts = k*ts;
hh = h*h'; tmp = h.*conj(h).*k; %tmp = h.*conj(h).*k_ts;
r = sum(tmp)/hh;    r2 = tmp*k.'/hh; %r2 = tmp*k_ts.'/hh;
tau_rms = sqrt(r2-r^2);     % rms delay
df = 1/Nfft;  %1/(ts*Nfft);
j2pi_tau_df = j*2*pi*tau_rms*df;
K1 = repmat([0:Nfft-1].',1,Np); K2 = repmat([0:Np-1],Nfft,1);
rf = 1./(1+j2pi_tau_df*(K1-K2*Nps));
K3 = repmat([0:Np-1].',1,Np); K4 = repmat([0:Np-1],Np,1);
rf2 = 1./(1+j2pi_tau_df*Nps*(K3-K4));
Rhp = rf;
Rpp = rf2 + eye(length(H_tilde),length(H_tilde))/snr;
H_MMSE = transpose(Rhp*inv(Rpp)*H_tilde.');  % MMSE channel estimateendfunction H_interpolated = interpolate(H_est,pilot_loc,Nfft,method)
% Input:        H_est    = Channel estimate using pilot sequence
%           pilot_loc    = location of pilot sequence
%                Nfft    = FFT size
%              method    = 'linear'/'spline'
% Output: H_interpolated = interpolated channel%MIMO-OFDM Wireless Communications with MATLAB㈢   Yong Soo Cho, Jaekwon Kim, Won Young Yang and Chung G. Kang
%?2010 John Wiley & Sons (Asia) Pte Ltdif pilot_loc(1)>1slope = (H_est(2)-H_est(1))/(pilot_loc(2)-pilot_loc(1));H_est = [H_est(1)-slope*(pilot_loc(1)-1)  H_est]; pilot_loc = [1 pilot_loc];
end
if pilot_loc(end)<Nfftslope = (H_est(end)-H_est(end-1))/(pilot_loc(end)-pilot_loc(end-1));  H_est = [H_est  H_est(end)+slope*(Nfft-pilot_loc(end))]; pilot_loc = [pilot_loc Nfft];
end
if lower(method(1))=='l', H_interpolated = interp1(pilot_loc,H_est,[1:Nfft]);   else      H_interpolated = interp1(pilot_loc,H_est,[1:Nfft],'spline');
end
end

DFT信道估计步骤及实例相关推荐

  1. 【学习笔记】OFDM中信道估计技术分析与实现

    目录 一.信道估计概念 二.信道估计作用 三.相干检测与非相干检测 (一)非相干检测 (二)相干检测 (三)注意 四.影响信道估计算法性能的重要因素 五.信道估计方法的划分 (一)根据处理域的不同, ...

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

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

  3. 混合波束成形| 高速铁路通信系统的信道估计:Location-Aided mMIMO Channel Tracking and Hybrid Beamforming for High-Speed

    关于 <Location-Aided mMIMO Channel Tracking and Hybrid Beamforming for High-Speed Railway Communica ...

  4. OFDM系统中的信道估计基础知识(一)

    OFDM完整仿真过程及解释(MATLAB) 参考二 调制与变频.基带信号与射频信号中的IQ调制(又称矢量调制) 目录 一.OFDM系统接收机的典型结构图 问题: 二.OFDM调制与解调 三.过程中涉及 ...

  5. AI赋能5G,利用神经网络进行信道估计

    随着5G和AI技术不断成熟和发展,如今基于AI辅助的无线通信正逐步从学术界走向产业界落地. 1 2022MWC上的5G+AI 近日举行的2022年世界移动通信大会(MWC)上,各大通信玩家纷纷拿出自己 ...

  6. 【OMP信道估计】基于OMP压缩感知的信道估计算法的MATLAB仿真

    1.软件版本 MATLAB2021a 2.本算法理论知识 3.核心代码 clc; clear; close all; warning off; addpath 'func\'CYC = 20; for ...

  7. 人工智能 信道估计 深度学习_深度学习人体姿态估计算法综述

    作者 | Bharath Raj 译者 | 李志 编辑 | Vincent AI 前线导读:人体姿态估计的任务是从包含人体的图片中检测出人体关键点,并恢复人体位姿.随着深度学习的发展,越来越多的深度学 ...

  8. 第7章:OFDM 信道估计与均衡(4)

    第7章(4)内容如下: 一.导频结构与图案 二.基于导频的信道估计算法和插值方法 本文所有可运行代码下载地址是:123kevin456/OFDM- 一.导频结构与图案 前三讲介绍了OFDM经过AWGN ...

  9. 从简单的信道估计说起

    前面写了关于CP在OFDM中的应用,主要是记录一点零星的想法而已,今天突然想写点关于信道特性方面的东西.原因有以下几点: 1)信道在仿真中的地位不容置疑,不同信道的条件下的仿真是许多课题的重点,自己几 ...

  10. 第7章:OFDM 信道估计与均衡(1)

    第7章(1)内容如下: 一.OFDM相关书籍 二.OFDM基本原理 三.OFDM经过高斯白噪声信道的误码率分析 三.总结 本人最近搞懂了OFDM的一些知识,便给本章取名为第7章--OFDM信道估计.均 ...

最新文章

  1. 使用标准模板find函数来对结构体容器进行查找
  2. 【bug记录】getDeviceId: The user 10002 does not meet the requirements to access device identifiers.
  3. linux-facl权限控制-移除-复制
  4. python生成随机整数_Python中,我想得到1~255随机整数,用rand.randint(1,255),但不想让里面170这个数出现,怎么写呢?...
  5. 软件测试的基础知识(六)
  6. Bailian4096 信号转换【密码】
  7. Web服务请求异步化介绍(概念篇)
  8. stm8s103k3 周期 捕获_STM8S 输入捕获学习
  9. PC_溢出概念+判断方法+示例
  10. matlab中电压跟踪型pwm,新型数字锁相环实现对电压信号的无差跟踪
  11. 新手必知的用户留存率知识
  12. Excel表格 |两列数据(多列)合并一列且自动换行
  13. 简述华为的鸿蒙操作系统的结构,华为鸿蒙操作系统今日重磅发布
  14. lyx安装(需先安装texlive)2021-03-14
  15. 硅谷创业教父保罗•格雷厄姆给小白的创业建议书
  16. 你知道吸引新客选择产品的角度从哪些方面考虑吗?产品研发后怎么评估呢?
  17. 【Winrar解压软件许可】
  18. 特征点匹配之-光流法(LK)
  19. 智慧商贸进销存—新增日常支出
  20. Android----项目集合

热门文章

  1. Oracle中文乱码
  2. STM32驱动SG90舵机与HC_SR04超声波模块
  3. 贝叶斯决策matlab模拟
  4. 如何选择HR人事管理软件?HR人事管理系统软件有哪些
  5. Pascal 基础教程
  6. java中堆栈溢出_Java堆栈溢出
  7. 职业学校计算机课评课,信息技术课评课范文
  8. 精辟!一文看懂layout与PCB的关系
  9. VFB组件:Scintilla控件(代码编辑器)
  10. 我经常登录的GIS专业论坛