为了解决频率选择性衰落信道引起的失真,OFDM系统在正交子载波上并行传输消息数据。然而,只有正交性得到保持时,OFDM才能够发挥其优势,在正交性得不到保持的情况下,系统会因为ISI和ICI而下降。

总的来说,与载波信号相关的畸变有两种。一种是由发射机和接收机的载波信号发生器不稳定而引起的相位噪声,可以将其建模为一个零均值的维纳随机过程。另一种是由多普勒频移所引起的载波频率偏移。(尽管我们想在发射机和接收机之间产生相同频率的载波,但是载波频率会因振荡器固有的物理特性的不同而难保持一致)

%OFDM基于循环前缀/训练序列/导频的载波频偏估计
clc;clear
CFO = 0.1;                      %归一化频偏
N_fft=128;                      %FFT的点数
N_bps=2;                        %调制阶数
M=2^N_bps;
Es=1;
A=sqrt(3/2/(M-1)*Es);           %信号幅度,QAM归一化因子
N=N_fft;
Ng=N_fft/4;                     %循环前缀或保护间隔长度
Nofdm=N_fft+Ng;                 %一个OFDM符号长度
Nsym=3;
h=complex(randn,randn)/sqrt(2); %信道冲击响应 %% 发送信号
x=[];
for m=1:Nsymmsgint=randi([0,M-1],1,N);if m<=2  %加导频Xp = add_pilot(zeros(1,N_fft),N_fft,4);Xf=Xp;%发射的前两个相同的训练符号不能包含数据符号   else %mod_object = qammod('M',M, 'SymbolOrder','gray');%4QAM正交幅度调制Xf = (A* qammod(msgint,M));end                        xt = ifft(Xf,N_fft);  x_sym = add_CP(xt,Ng);%四分之一x= [x x_sym];
end
y=x;  %没有信道影响
sig_pow= y*y'/length(y);  %计算信号功率
SNRdBs= 0:3:30;
MaxIter = 100;
for i=1:length(SNRdBs)SNRdB = SNRdBs(i);MSE_CFO_CP = 0; MSE_CFO_Moose = 0; MSE_CFO_Classen = 0;rand('seed',1); %官方推荐使用rng(1),seed等词对于随机数生成器来说是一种误导randn('seed',1);y_CFO= add_CFO(y,CFO,N_fft);%添加CFOfor iter=1:MaxItery_aw = awgn(y_CFO,SNRdB,'measured'); %AWGNEst_CFO_CP = CFO_CP(y_aw,N_fft,Ng);  %基于CP的载波频偏估计MSE_CFO_CP = MSE_CFO_CP + (Est_CFO_CP-CFO)^2;Est_CFO_Moose = CFO_Moose(y_aw,N_fft); %MooseMSE_CFO_Moose = MSE_CFO_Moose + (Est_CFO_Moose-CFO)^2;Est_CFO_Classen = CFO_Classen(y_aw,N_fft,Ng,Xp);  %ClassenMSE_CFO_Classen = MSE_CFO_Classen + (Est_CFO_Classen-CFO)^2;endMSE_CP(i)=MSE_CFO_CP/MaxIter; MSE_Moose(i)=MSE_CFO_Moose/MaxIter; MSE_Classen(i)=MSE_CFO_Classen/MaxIter;
endsemilogy(SNRdBs, MSE_CP,'-*');grid on;hold on
semilogy(SNRdBs, MSE_Moose,'-x')
semilogy(SNRdBs, MSE_Classen,'g-+')
xlabel('SNR[dB]'), ylabel('MSE');
title('载波频偏估计');
legend('基于循环前缀','Moose (基于训练序列)','Classen (基于导频)');

运行结果:

function xp=add_pilot(x,Nfft,Nps)  %add_pilot.m
%生成和插入导频序列
%恒定幅度零自相关序列
if nargin<3Nps=4; %导频间隔
end
Np=Nfft/Nps;  %导频数
xp=x; %准备OFDM信号(包括导频信号)
for k=1:Npxp((k-1)*Nps+1)= exp(1i*pi*(k-1)^2/Np);  % Np是偶数%xp((k-1)*Nps+1)= exp(j*pi*(k-1)*k/Np);  % Np是奇数
end
end
%------------------------------------------------------------------function CFO_est=CFO_CP(y,Nfft,Ng)  %CFO_CP.m
%基于CP的时域CFO估计nn=1:Ng;
CFO_est = angle(y(nn+Nfft)*y(nn)')/(2*pi);
%| |<0.5不能用于估计整数CFO
end
%-----------------------------------------------------------------function CFO_est=CFO_Moose(y,Nfft)  %CFO_Moose.m
%基于Moose的频域CFO估计 for i=0:1   Y(i+1,:)= fft(y(Nfft*i+1:Nfft*(i+1)),Nfft);
end
CFO_est = angle(Y(2,:)*Y(1,:)')/(2*pi);
end
%-----------------------------------------------------------------function CFO_est=CFO_Classen(yp,Nfft,Ng,Nps)  %CFO_Classen.m
%利用Classen的频域CFO估计if length(Nps)==1Xp=add_pilot(zeros(1,Nfft),Nfft,Nps); %导频信号
elseXp=Nps; %如果NPs是一个矩阵,那么Xp是导频序列
end
Nofdm=Nfft+Ng;
kk=find(Xp~=0);
Xp=Xp(kk); %提取导频
for i=1:2 yp_without_CP = remove_CP(yp(1+Nofdm*(i-1):Nofdm*i),Ng);%调用remove_CP函数Yp(i,:) = fft(yp_without_CP,Nfft);
end
CFO_est = angle(Yp(2,kk).*Xp*(Yp(1,kk).*Xp)')/(2*pi)*Nfft/Nofdm;
end
%------------------------------------------------------------------function y=add_CP(x,Ncp)  %add_CP.m
%基于CP的时域y = [x(:,end-Ncp+1:end) x];
end  %26行调用 x_sym = add_CP(xt,N_g)
%------------------------------------------------------------------function y=remove_CP(x,Ncp,Noff)  %remove_CP.m  去除循环前缀
if nargin<3Noff=0;
end
y=x(:,Ncp+1-Noff:end-Noff);
end
%------------------------------------------------------------------function y_CFO=add_CFO(y,CFO,Nfft)  %add_CFO.m
% To add an arbitrary frequency offset
% Input: y    = Time-domain received signal
%        dCFO = FFO (fractional CFO) + IFO (integral CFO)
%        Nfft = FFT size;nn=0:length(y)-1;
y_CFO = y.*exp(j*2*pi*CFO*nn/Nfft);
end
%==================================================================

无线通信与编码_MATLAB实现OFDM载波频偏估计_含仿真代码相关推荐

  1. 5GNR漫谈17:OFDM载波频偏估计(CFO)

    发射机的载波Ftx和接收机的载波Frx,是由各自射频硬件电路上的晶振源提供,由于是两个独立的物理器件,不可避免的存在频率上的偏差.频率偏差,会造成调制数据相位上的旋转,在接收端必须对频偏进行纠正. 在 ...

  2. 【论文学习】5、基于OFDM无线局域网的载波频偏估计

    摘要 针对基于正交频分复用(OFDM)的无线局域网,提出了一种有效的载波频偏估计算法.我们使用的包前导信息是基于ieee802.11标准化组采用的高速WLAN标准.数值结果验证了该算法的有效性. 索引 ...

  3. 基于伪随机序列共轭相乘的OFDM通信系统频偏补偿算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM ...

  4. 快速傅里叶变换载波频偏估计算法 matlab,快速傅里叶变换载波频偏估计算法

    快速傅里叶变换 第11卷 第2期 电路与系统学报 Vol.11, No.2 2006 年 4 月 JOURNAL OF CIRCUITS AND SYSTEMS April, 2006 文章编号:10 ...

  5. 【论文学习】7、ieee802.11ah中基于深度学习的载波频偏估计

    摘要 基于ieee802.11标准的Wi-Fi系统是最流行的无线接口,它采用先听后讲(LBT)的方式进行信道接入.大多数基于LBT的系统的显著特征是,发射机使用在数据之前的前导码来允许接收机执行分组检 ...

  6. 通信中的同步(一)——基于FFT的信号信号载波频偏估计

    实际上,基于 F F T FFT FFT的粗同步算法适用于各种调制方式.(BPSK, QPSK, 8PSK, PAM, or QAM调制) 基本算法见 Wang, Y., K. Shi, and E. ...

  7. 【Simulink教程案例20】基于simulink的OFDM通信系统信道估计建模与仿真

    欢迎订阅<FPGA/MATLAB/SIMULINK系列教程> Simulink教程目录 本课程学习成果预览: 目录 1.软件版本 2.OFDM通信系统信道估计理论简介

  8. 无线通信与编码实验_MATLAB利用限幅和滤波操作实现OFDM系统降峰均比(PAPR)_含实现代码

    MATLAB实现OFDM系统降峰均比 在OFDM系统中,经过IFFT运算之后所有的子载波相加,时域的发射信号会有很高的峰值.与单载波系统相比,OFDM系统具有很高的PAPR. (峰值-平均功率比 Pe ...

  9. 频偏纠正matlab实现,频偏估计matlab代码

    瑚伽㈣咖,<第n次仿真) 嘎第"次仿真) 算法仿真频偏估计算法的全数字仿真采用Matlab6.5. 图5原频谱估计算 法的性能曲线 图6简化了的频谱估计 算法的性能曲线...... 通 ...

  10. matlab 载波相位估计,基于小波变换的载波相位恢复算法的研究

    刘畅安1,胡芳仁1, 2,刘昕1 (1. 南京邮电大学 光电工程学院,江苏 南京 210023: 2. 南京邮电大学 Peter Grüenberg中心,江苏 南京 210023) 摘要:在相干光通信 ...

最新文章

  1. VR跨界一触即发,探秘87870“魔都之夜”VR派对
  2. python时间序列因果检验_Python Statsmodels的时间序列Ljung_Box检验
  3. SAP Leonardo及客户案例
  4. ThinkPHP中的display()和fetch()的区别
  5. Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) A-F全题解
  6. cassandra可视化工具_一位数据科学家的私房工具清单
  7. spark 数据框 删除列_pandas 常用的数据处理函数
  8. linux 设备/dev
  9. weblogic创建多个域 及域的配置方法 war包部署及访问测试
  10. CSS样式中,background-image 背景图片居中显示并且在不同屏幕分辨率下始终居中
  11. mysql查询结果输出文件_如何将MySQL查询输出保存到文件?
  12. C#4.0新特性:可选参数,命名参数,Dynamic
  13. 【斯坦福大学新研究】声波、光波等都是RNN
  14. Linux下安装Mysql详解
  15. Python采集豆瓣网电影资源--疑问
  16. 19电子设计速成实战宝典pdf_ALTIUMDESIGNER19(中文版)电子设计速成实战宝典
  17. 零基础快速入行入职软件测试工程师
  18. c语言中立方和乘法怎么表示什么区别,c语言中的乘方符号是什么?
  19. C_CAPM模型(上)
  20. PAML中文文档/计算分子进化

热门文章

  1. ZYNQ PS使用中遇到问题
  2. java调用百度Ocr识别以及报错SDK108的解决办法
  3. 技术族谱:预告片的制作思路
  4. 应用之星破除行业门槛 零成本开发手机应用
  5. Shopify API接入
  6. 3大奇葩排序之猴子算法
  7. 综合架构——网站服务
  8. 618“低调”谢幕,百秋尚美如何携手品牌跨越“不确定时代”?
  9. PLM( 产品生命周期管理)的简单介绍
  10. Gaussian .fchk .chk 文件转化错误解决方法