各位高手你们好,在下有理了。我最近在写有关ofdm的同步的问题,主要是SC算法,

我已经把M(d)的图像仿真出来了,也找到了M(d)取最大时的那个点,还有小数频偏也算算出来了,但是我不会算'定时估计均方差'和‘频率估计均方差’,请给位高手指点一下 在下感激不尽!!!

我写的代码 ,请高手们看一下那儿出错了:

前半部分仿真可能是对的 ,但是后面求频偏估计均方误差与定时估计均方误差的图像时,就不对了

希望告诉们能给我解答一下

clear

clc

gilen=32;

para=512;   % Number of parallel channel to transmit (points)

fftlen=512; % FFT length

noc=512;    % Number of carrier

nd=6;       % Number of information OFDM symbol for one loop

ml=2;       % Modulation level : QPSK

sr=250000;  % Symbol rate

br=sr.*ml;  % Bit rate per carrier

%gilen=32;   %Length of guard interval (points)

fullen=gilen+para;  %ofdm符号总长

deltad=250;  %时延

deltaf=0.25;  %频偏

deltaderr=0;%时延均方误差

deltaferr=0;%频偏均方误差

derr=zeros(1,11);%时延均方误差

ferr=zeros(1,11);%频偏均方误差

%f=-1;

error=zeros(1,11);

o=0

%************************** main loop part **************************

for ebn0=0:2:20

o=o+1;

%************************** main loop part **************************

nloop=100;  % Number of simulation loops

noe = 0;    % Number of error data

nod = 0;    % Number of transmitted data

eop=0;      % Number of error packet

nop=0;      % Number of transmitted packet

for iii=1:nloop

%************************** transmitter*********************************

%**************************训练序列 ****************************

pn = rand(1,para)>0.5;

pn = reshape(pn,para/2,2);

[ipn0,qpn0] = qpskmod(pn,para/2,1,ml);

kmod=1/sqrt(2); %  sqrt : built in function

ipn0=ipn0.*kmod;

qpn0=qpn0.*kmod;

sym = ipn0 + i*qpn0;

symbuf = zeros(para,1);

symbuf(1:2:para,1) = sym;

%train1 = symbuf*7;                                %为什么乘以7

train1 = symbuf*15;

clear sym;

clear symbuf;

pn1 = rand(1,para)>0.5;

pn1 = reshape(pn1,para/2,2);

[ipn1,qpn1] = qpskmod(pn1,para/2,1,ml);

kmod=1/sqrt(2); %  sqrt : built in function

ipn1=ipn1.*kmod;

qpn1=qpn1.*kmod;

sym = ipn1 + i*qpn1;

symbuf = zeros(para,1);

symbuf(1:2:para,1) = sym;

clear sym;

pn2 = rand(1,para)>0.5;

pn2 = reshape(pn2,para/2,2);

[ipn2,qpn2] = qpskmod(pn2,para/2,1,ml);

kmod=1/sqrt(2); %  sqrt : built in function

ipn2=ipn2.*kmod;

qpn2=qpn2.*kmod;

sym = ipn2 + i*qpn2;

symbuf(2:2:para,1) = sym;

train2 = symbuf*5;                                 %为什么乘以5

%train2 = symbuf;

clear sym;

clear symbuf;

v = zeros(1,para);

kpois=1:2:para;

v(kpois) = sqrt(2)*train2(kpois)./train1(kpois); % 含有 训练序列对应子载波的相位差信息

%************************** Data generation

%****************************

seldata=rand(1,para*nd*ml)>0.5;  %  rand : built in function

%****************** Serial to parallel conversion

%***********************

paradata=reshape(seldata,para,nd*ml); %  reshape : built in function

%************************** QPSK modulation

[ich,qch]=qpskmod(paradata,para,nd,ml);

kmod=1/sqrt(2); %  sqrt : built in function

ich1=ich.*kmod;

qch1=qch.*kmod;

%******************* IFFT ************************

x=ich1+qch1.*i;

x(:,1)=train1;

x(:,2)=train2;

y=ifft(x); %  ifft : built in function

ich2=real(y);   %  real : built in function

qch2=imag(y);   %  imag : built in function

%********* Gurad interval insertion **********

[ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd);

fftlen2=fftlen+gilen;

%********* Attenuation Calculation *********

spow=sum(ich3.^2+qch3.^2)/nd./para;  %  sum : built in function

attn=0.5*spow*sr/br*10.^(-ebn0/10);

attn=sqrt(attn);

%***************************  Receiver  *****************************

%*************************加频率偏移和时延***************************

[ich3,qch3]=delay(ich3,qch3,length(ich3),deltad);

y=ich3+qch3.*i;

for k=1:length(ich3);

y(k)=y(k)*exp(i*2*pi*deltaf*k/para);

end

ich3=real(y);

qch3=imag(y);

%***************** AWGN addition *********

[ich4,qch4]=comb(ich3,qch3,attn);

y=ich4+qch4.*i;

%*****************小数频率偏移和时延估计*********************************

for d=1:para

for n=1:para/2

z1(n)=conj(y(d+n+para/2))*y(d+n);

end

p1(d)=sum(z1);

for n=1:para/2

z2(n)=abs(y(d+n+para/2)).^2;

end

p2(d)=sum(z2);

end

p=abs(p1).^2./(p2.^2);

plot(p);

%c=linspace(-150,150,256);

%stem(c,p);

%grid on;

[a a1]=max(p); % 求最大值

th=a*0.9;

xulie1=p(1:a1-1);

xulie2=p(a1+1:end);

[j1 j2]=min(abs(xulie1-th));

[j3 j4]=min(abs(xulie2-th));

if(mod(j2+j4+a1,2)==0)

j5=(j2+j4+a1)/2;

else

j51=(j2+j4+a1-1)/2;

j52=(j2+j4+a1+1)/2;

[j53 j54]=max([p(j51) p(j52)]);

j5=j54+j51-1;

end

%********************求小数陪频偏***********************

f=-angle(p1(j5))/pi;

%这是一种 最大似然方法联合实现符号定时同步和载波同步的方法

% 具体的推导 见 《OFDM移动通信技术原理与应用》 4.6节 P104

%m =m-1;%  公式推导中的d实际上是delay 了 d-1 个样值   wm added

%********************定时估计方差***********************

%********************小数倍频偏补偿***********************

%r1=y;

%ich5=real(r1);

%qch5=imag(r2);

for k=1:length(ich4);

y(k)=y(k)*exp(i*2*pi*(-f)*k/para);

end

%********************整数倍频偏估计***********************

r1 = fft(y(gilen+deltad+1:para+gilen+deltad));

r2 = fft(y(2*gilen+deltad+para+1:2*para+2*gilen+deltad));

for n=2:2:para/2-1

for k=1:2:para/2-n

z11(k)=conj(conj(r1(k+n))*r2(k+n))*v(k);

end

r11(n)=sum(z11);

for k=para/2-n+2:2:para/2

z22(k)=conj(conj(r1(k+n-para/2))*r2(k+n-para/2))*v(k);

end

r22(n)=sum(z22);

x=r11+r22;

end

for k=1:2:para/2

z33(k)=2*abs(r2(k)).^2;

end

q=sum(z33);

F=abs(x).^2./(q.^2);

b=max(F);   % 求最大值

g=find(F==b) ;   % 求最大值所在位置

%plot(abs(x));

%plot(F);

%********************频偏的估计值***********************

l=g+f; %频偏估计值

%********************同步估计均方误差计算***********************

deltaderr=deltaderr+(j5-16-deltad)^2;

deltaferr=deltaferr+(f-deltaf)^2;

end

derr(o)=sqrt(deltaderr/(nloop))

ferr(o)=sqrt(deltaferr/(nloop))

end

figure(1);

grid on

semilogy(0:2:20,ferr,'x--b');

hold on

semilogy(0:2:20,ferr,'x--b');

hold on

频偏纠正matlab实现,Matlab关于OFDM同步定时估计和频偏估计的算法相关推荐

  1. 频偏纠正matlab实现,一种用于ZigBee的频偏估计方法及其系统与流程

    技术领域本发明涉及一种频偏估计方法,尤其涉及一种用于ZigBee的频偏估计方法,并涉及采用了该用于ZigBee的频偏估计方法的频偏估计系统. 背景技术: 无线通信接收机中,通过射频到基带的数据通常有一 ...

  2. td lte pss同步matlab仿真,一种LTE-A帧定时同步算法的AISC设计与实现

    0 引言 当前LTE-Advanced系统架构趋于扁平化,以往的帧定时同步方案已不再适合LTE-Advanced系统,因此,需要寻找一种新的帧定时同步实现方案.本文将该算法分成3个步骤:粗定时同步和小 ...

  3. matlab产生ofdm信号,Matlab 完成简单的OFDM 信号的产生与解调程序.pdf

    Matlab 完成简单的OFDM 信号的产生与解调程序实验研究 OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技 术,实际上OFDM是M ...

  4. 初识OFDM(三):OFDM同步技术之STO

    文章目录 初识OFDM(三):OFDM同步技术之STO 一.什么是STO 二. STO的影响 1. case1 2.case2 3 case3 4 case4 5 matlab实现 三. STO估计技 ...

  5. 风力发电控制系统的matlab,基于MATLAB的风力发电系统设计ppt课件

    <基于MATLAB的风力发电系统设计ppt课件>由会员分享,可在线阅读,更多相关<基于MATLAB的风力发电系统设计ppt课件(21页珍藏版)>请在人人文库网上搜索. 1.Th ...

  6. c++引用matlab类,matlab调用C++函数浅谈(一)

    由于在下才疏学浅,在网上看各高手指南时亦觉云里雾里,遂决定一切说明从最基础说起,一是方便自己(记性奇差),二是方便似我的小白.以下部分是我从各网站论坛等摘抄.重组.改写过的,以求更加详实明朗,由于参考 ...

  7. 磁盘驱动读取系统MATLAB仿真,matlab读写..doc

    matlab读写. MATLAB二进制数据文件的读写 (2011-06-04 19:44:27) 转载▼ 标签: easleyhux matlab 二进制读写 杂谈分类: MATLAB 所谓二进制格式 ...

  8. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)一阶保持(FOH)内插

    上篇博文采用了零阶保持(ZOH)的方式进行了重构:[ MATLAB ]MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH) 这篇博文我们使用一阶保持(FOH)内插来重建信号,采用的案例依然是 ...

  9. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(二)零阶保持(ZOH)

    上篇博文采样sinc函数内插的方式实现了模拟信号的重建:[ MATLAB ]MATLAB 实现模拟信号采样后的重建(一) 这篇博文我们使用零阶保持器(ZOH)来重建信号,采用的案例依然是上篇博文中的案 ...

最新文章

  1. java 接口与抽象类的区别
  2. java商品搜索功能_利用solr实现商品的搜索功能(实例讲解)
  3. 【FI】SAP ODN简介
  4. Spring2 Hibernate3 Junit 应用示例1
  5. 闪退没由报错_秉承工匠精神,3步定位飞桨报错原因,你也来试试?
  6. Django接入paypal的账户-准备工作
  7. opencv支持python3吗_Python3.4+opencv3
  8. 什么是大数据,大数据到底应该如何学?
  9. 第3章   IP寻址
  10. ABP理论之CSRF
  11. 作业四: 结对编程项目---四则运算
  12. jQuery提供的存储接口
  13. (转)一个百倍股的坠落:那个曾经满大街的ESPRIT是如何衰败的
  14. 网银爬虫系统(爬取网银流水,爬取网银余额)难点分析
  15. Gitlab 隐藏注册功能
  16. 奥克兰计算机科学专业世界排名,2019QS世界大学学科排名出炉,新西兰最强专业看过来!...
  17. 创业公司期权如何运作
  18. gtx3050属于什么档次的显卡
  19. 【基于物理的渲染(PBR)白皮书】(五)几何函数相关总结
  20. 多元回归分析(分类与运用)

热门文章

  1. 如何设置定时器每天执行一次_游戏活动的自动循环——定时器管理
  2. python有效变量名_Python变量命名规则
  3. 安卓获取imei权限闪退_Android10 下获取序列号和IMEI号的权限
  4. 「权威发布」2019年全国大学生电子设计竞赛获奖名单【涵盖国一、二等奖】
  5. Traceback (most recent call last)AttributeError: ‘NumpyArrayIterator‘ object has no attribute ‘ndim‘
  6. 计算机学习的基本形式,电脑基础知识学习方法
  7. 打开程序时固定位置_FANUC机器人:参考位置功能介绍与设定方法
  8. 使用系统调用pipe建立一条管道线_【Linux系统】Linux进程间通信
  9. java jpeg压缩解码_图片压缩(iOS)
  10. 图像融合亮度一致_博文精选 | 基于深度学习的低光照图像增强方法总结