日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

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

發布時間:2023/12/15 循环神经网络 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 频偏纠正matlab实现,Matlab关于OFDM同步定时估计和频偏估计的算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

各位高手你們好,在下有理了。我最近在寫有關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同步定时估计和频偏估计的算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。