DSP OFDM原理实现实验.docx

上传人:b****5 文档编号:12596330 上传时间:2023-04-20 格式:DOCX 页数:21 大小:471.47KB
下载 相关 举报
DSP OFDM原理实现实验.docx_第1页
第1页 / 共21页
DSP OFDM原理实现实验.docx_第2页
第2页 / 共21页
DSP OFDM原理实现实验.docx_第3页
第3页 / 共21页
DSP OFDM原理实现实验.docx_第4页
第4页 / 共21页
DSP OFDM原理实现实验.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

DSP OFDM原理实现实验.docx

《DSP OFDM原理实现实验.docx》由会员分享,可在线阅读,更多相关《DSP OFDM原理实现实验.docx(21页珍藏版)》请在冰豆网上搜索。

DSP OFDM原理实现实验.docx

DSPOFDM原理实现实验

实验:

OFDM原理与实现

一、实验内容

学习CP-OFDM实现代码

•实现CP-SCFDE

•实现ZP-OFDM

•实现ZP-SCFDE

•比较分析四种技术的识码率性能

• 分析ZP-OFDM/SCFDE两种方案的复杂度

• 探讨是否有降低ZP-OFDM与ZP-SCFDE均衡复杂

的可能性(选做)

1、学习CP-OFDM实现代码

(1)代码

N=256;%载波数,i.e.,fftsize

Ncp=N/4;%循环前缀的长度

Ns=N+Ncp;%每个OFDM符号的整个长度

Ntry=100;%OFDM帧的数量

Nsyb=20;%每帧的OFDM符号的数目

M=16;%M-aryQAM

m=log2(M);%mbitspersubcarrier

Pav=2*(M-1)/3.0;%每个子载波的平均功率

PavdB=10*log10(Pav/N);%时间信号的分贝平均值

SNRdB=[0:

5:

40];%SNRlisttobesimulated

%Setmulti-pathfadingchannelparameters

Np=Ncp/4;%Thenumberofmultipaths

%idxTaps=sort(randperm(Ncp,Np));%Aftermatlab2012a

idxTaps=randperm(Ncp);%beforematlab2012a

idxTaps=sort(idxTaps(1:

Np));%beforematlab2012a

idxTaps-idxTaps

(1)+1;%Movethefirstmultipathto0delay

DPS=exp(-3*idxTaps/Ncp);%powerineachtap:

DelayPowerSpectrum

DPS=DPS/sum(DPS);%Normalize

Ampath=sqrt(DPS);%Amplitudeofeachpath

%%DirectlyuseMatlabchannelobject

%SymbolRate=20e6;%SamplingRate

%Ts=1/SymbolRate;%Symbolperiod

%Tau=(idxTaps-1)*Ts;%tapdelayins

%PdB=10*log10(DPS);%DelayPowerSpectrumindB

%Fdop=0;%Quasi-staticchannels

%ch=rayleighchan(Ts,Fdop,Tau,PdB);

%ch.StorePathGains=1;%Flagtostorepathgain

hzero=zeros(Ncp,1);%zerovectorforchannelimpulseresponse

ErrSymbols=zeros(size(SNRdB));%storethenumberoftheerrorsymbols

tic%theinstantbeginsimulation

fornumSimSymbols=1:

Ntry

curErrSymbols=0;

%Step1:

Generaterandomdigitalmessage

d=randi([0,M-1],N,Nsyb);%Messagesignal

%Step2:

M-QAMmodulation.

X=qammod(d,M);

%Step3:

IFFT,generatetimefieldsignal,

%i.e.,modulateatfrequencyField,

x=ifft(X);

%Step4:

Ìí¼ÓÑ»·Ç°×º

xcp=[x(N-Ncp+1:

end,:

);x];

%Serialize

xcp=xcp(:

);

%Step5a:

TransmitthroughChannel

%MannullyGeneratemultipathchannelimpulseresponse

cir=Ampath.*(randn(1,Np)+1j*randn(1,Np))/sqrt

(2);

h=hzero;h(idxTaps)=cir.';%storechannel

%Channeleffect

xcpch=zeros(Ns*Nsyb+Ncp,1);

forp=1:

Np

idx=[0:

Ns*Nsyb-1]+idxTaps(p);

xcpch(idx)=xcpch(idx)+cir(p)*xcp;

end

xcpch=xcpch(1:

Ns*Nsyb);

%CanalsouseMatlabchanelobject

%xcpch=filter(ch,xcp);

%h=hzero;h(idxTaps)=ch.PathGains;%Savechannel

fork=1:

length(SNRdB)

%Step5b:

AWGN

y=awgn(xcpch,SNRdB(k),'measured');%PavdB);

%Step6:

DeleteCP

y=reshape(y,[Ns,Nsyb]);

y=y([Ncp+1:

end],:

);

%Step7:

FFT,ComebacktoFrequencyField

Y=fft(y);

%Step8:

Frequencydomainequalization

HCP=fft(h,N);%ChannelFrequencyResponseofPrefectchannel

Gzf=1./HCP;%Zero-ForcingEqualizer

Xhat=Y.*repmat(Gzf,[1,Nsyb]);

%Step9:

Demodulate,torecoverthemessage.

dhat=qamdemod(Xhat,M);

%Step10:

Computesymbolerrorrate.

ddif=d-dhat;ddif=ddif(:

);

curErrSymbols=length(find(ddif~=0));

ErrSymbols(k)=ErrSymbols(k)+curErrSymbols;

end

end

toc%simulationtime

%Step10:

Showsimulationresults

cpSER=ErrSymbols/(N*Nsyb*Ntry);

%TheorySERofM-aryQAMinflatFadingChannel

SNR=10.^(SNRdB/10);

EbNo=10*log10(SNR/m);

[thyBER,thySER]=berfading(EbNo,'qam',M,1)

figure;semilogy(SNRdB,[cpSER;thySER],'-o');

xlabel('SNRdB');ylabel('Symbolerrorratio(SER)');

legend('SimulatedCP-OFDMinmultipathfading','TheoreticalM-QAMinflatfading');gridon;

(2)结果

(3)分析

cp-ofdm技术的误码率与理论计算结果基本一致。

2、实现CP-SCFDE

(1)代码

%Programcp_scfde

N=256;%Thenumberofthesubcarriers,i.e.,fftsize

Ncp=N/4;%thelengthofthecyclicprefix

Ns=N+Ncp;%ThewholelengthofeachOFDMsymbol

Ntry=100;%ThenumberofOFDMFrametosimulateperSNRvalue

Nsyb=20;%ThenumberofOFDMsymbolsperframe

M=16;%M-aryQAM

m=log2(M);%mbitspersubcarrier

Pav=2*(M-1)/3.0;%averagepowerofeachsubcarrier

PavdB=10*log10(Pav/N);%averagepoweroftimesignalindBforOFDM

SNRdB=[0:

5:

40];%SNRlisttobesimulated

%Setmulti-pathfadingchannelparameters

Np=Ncp/4;%Thenumberofmultipaths

%idxTaps=sort(randperm(Ncp,Np));%Aftermatlab2012a

idxTaps=randperm(Ncp);%beforematlab2012a

idxTaps=sort(idxTaps(1:

Np));%beforematlab2012a

idxTaps-idxTaps

(1)+1;%Movethefirstmultipathto0delay

DPS=exp(-3*idxTaps/Ncp);%powerineachtap:

DelayPowerSpectrum

DPS=DPS/sum(DPS);%Normalize

Ampath=sqrt(DPS);%Amplitudeofeachpath

hzero=zeros(Ncp,1);%zerovectorforchannelimpulseresponse

ErrSymbols=zeros(size(SNRdB));%storethenumberoftheerrorsymbols

tic%theinstantbeginsimulation

fornumSimSymbols=1:

Ntry

curErrSymbols=0;

%Step1:

Generaterandomdigitalmessage

d=randi([0,M-1],N,Nsyb);%Messagesignal

%Step2:

M-QAMmodulation.

%X=qammod(d,M);

x=qammod(d,M);

%Step3:

IFFT,generatetimefieldsignal,

%i.e.,modulateatfrequencyField,

%x=ifft(X);

%Step4:

Ìí¼ÓÑ»·Ç°×º

xcp=[x(N-Ncp+1:

end,:

);x];

%Serialize

xcp=xcp(:

);

%Step5a:

TransmitthroughChannel

%MannullyGeneratemultipathchannelimpulseresponse

cir=Ampath.*(randn(1,Np)+1j*randn(1,Np))/sqrt

(2);

h=hzero;h(idxTaps)=cir.';%storechannel

%Channeleffect

xcpch=zeros(Ns*Nsyb+Ncp,1);

forp=1:

Np

idx=[0:

Ns*Nsyb-1]+idxTaps(p);

xcpch(idx)=xcpch(idx)+cir(p)*xcp;

end

xcpch=xcpch(1:

Ns*Nsyb);

%CanalsouseMatlabchanelobject

%xcpch=filter(ch,xcp);

%h=hzero;h(idxTaps)=ch.PathGains;%Savechannel

fork=1:

length(SNRdB)

%Step5b:

AWGN

y=awgn(xcpch,SNRdB(k),'measured');%PavdB);

%Step6:

DeleteCP

y=reshape(y,[Ns,Nsyb]);

y=y([Ncp+1:

end],:

);

%Step7:

FFT,ComebacktoFrequencyField

Y=fft(y);

%Step8:

Frequencydomainequalization

HCP=fft(h,N);%ChannelFrequencyResponseofPrefectchannel

Gzf=1./HCP;%Zero-ForcingEqualizer

Xhat=Y.*repmat(Gzf,[1,Nsyb]);

xhat=ifft(Xhat);

%Step9:

Demodulate,torecoverthemessage.

dhat=qamdemod(xhat,M);

%Step10:

Computesymbolerrorrate.

ddif=d-dhat;ddif=ddif(:

);

curErrSymbols=length(find(ddif~=0));

ErrSymbols(k)=ErrSymbols(k)+curErrSymbols;

end

end

toc%simulationtime

%Step10:

Showsimulationresults

cpSER=ErrSymbols/(N*Nsyb*Ntry);

%TheorySERofM-aryQAMinflatFadingChannel

SNR=10.^(SNRdB/10);

EbNo=10*log10(SNR/m);

[thyBER,thySER]=berfading(EbNo,'qam',M,1);

figure;semilogy(SNRdB,[cpSER;thySER],'-o');

xlabel('SNRdB');ylabel('Symbolerrorratio(SER)');

legend('SimulatedCPSCFDEinmultipathfading','TheoreticalM-QAMinflatfading');gridon;

(2)结果

(3)分析

cp-scfde技术相对于理论结果有较大的差别,而相对于cp-ofdm其误码率要低。

3、实现ZP-OFDM

(1)代码

%Programzp_ofdm

N=256;%Thenumberofthesubcarriers,i.e.,fftsize

Ncp=N/4;%thelengthofthecyclicprefix

Ns=N+Ncp;%ThewholelengthofeachOFDMsymbol

Ntry=100;%ThenumberofOFDMFrametosimulateperSNRvalue

Nsyb=20;%ThenumberofOFDMsymbolsperframe

M=16;%M-aryQAM

m=log2(M);%mbitspersubcarrier

Pav=2*(M-1)/3.0;%averagepowerofeachsubcarrier

PavdB=10*log10(Pav/N);%averagepoweroftimesignalindBforOFDM

SNRdB=[0:

5:

40];%SNRlisttobesimulated

SNR=10.^(SNRdB/10);

%Setmulti-pathfadingchannelparameters

Np=Ncp/4;%Thenumberofmultipaths

%idxTaps=sort(randperm(Ncp,Np));%Aftermatlab2012a

idxTaps=randperm(Ncp);%beforematlab2012a

idxTaps=sort(idxTaps(1:

Np));%beforematlab2012a

idxTaps-idxTaps

(1)+1;%Movethefirstmultipathto0delay

DPS=exp(-3*idxTaps/Ncp);%powerineachtap:

DelayPowerSpectrum

DPS=DPS/sum(DPS);%Normalize

Ampath=sqrt(DPS);%Amplitudeofeachpath

hzero=zeros(Ncp,1);%zerovectorforchannelimpulseresponse

ErrSymbols=zeros(size(SNRdB));%storethenumberoftheerrorsymbols

ErrSymbols_zf=zeros(size(SNRdB));%storethenumberoftheerrorsymbols

ErrSymbols_mmse=zeros(size(SNRdB));

tic%theinstantbeginsimulation

fornumSimSymbols=1:

Ntry

curErrSymbols_zf=0;

%Step1:

Generaterandomdigitalmessage

d=randi([0,M-1],N,Nsyb);%Messagesignal

%Step2:

M-QAMmodulation.

X=qammod(d,M);

%Step3:

IFFT,generatetimefieldsignal,

%i.e.,modulateatfrequencyField,

x=ifft(X);

si=size(x);

%Step4:

Ìí¼ÓÑ»·Ç°×º

xcp=[x;zeros(Ncp,si

(2))];

%Serialize

xcp=xcp(:

);

%Step5a:

TransmitthroughChannel

%MannullyGeneratemultipathchannelimpulseresponse

cir=Ampath.*(randn(1,Np)+1j*randn(1,Np))/sqrt

(2);

h=hzero;h(idxTaps)=cir.';%storechannel

%Channeleffect

xcpch=zeros(Ns*Nsyb+Ncp,1);

forp=1:

Np

idx=[0:

Ns*Nsyb-1]+idxTaps(p);

xcpch(idx)=xcpch(idx)+cir(p)*xcp;

end

xcpch=xcpch(1:

Ns*Nsyb);

C=[h;zeros(N,1)];

R=[h

(1),zeros(1,N-1)];

H=toeplitz(C,R);

gzf=pinv(H);%ZF-equalizer

fork=1:

length(SNRdB)

%Step5b:

AWGN

y=awgn(xcpch,SNRdB(k),'measured');%PavdB);

%Step6:

DeleteCP

y=reshape(y,[Ns,Nsyb]);

%Step7a:

ZF-Timedomainequalization

Yhat_zf=gzf*y;

yhat_zf=fft(Yhat_zf);

%Step9:

Demodulate,torecoverthemessage.

dhat_zf=qamdemod(yhat_zf,M);

%Step10:

Computesymbolerrorrate.

ddif_zf=d-dhat_zf;ddif_zf=ddif_zf(:

);

curErrSymbols_zf=length(find(ddif_zf~=0));

ErrSymbols_zf(k)=ErrSymbols_zf(k)+curErrSymbols_zf;

%Step7b:

MMSE-Timedomainequalization

gmmse=inv((1/SNR(k))*eye(N)+(H')*H)*(H');

Yhat_mmse=gmmse*y;

yhat_mmse=fft(Yhat_mmse);

%Step9:

Demodulate,torecoverthemessage.

dhat_mmse=qamdemod(yhat_mmse,M);

%Step10:

Computesymbolerrorrate.

ddif_mmse=d-dhat_mmse;ddif_mmse=ddif_mmse(:

);

curErrSymbols_mmse=length(find(ddif_mmse~=0));

ErrSymbols_mmse(k)=ErrSymbols_mmse(k)+curErrSymbols_mmse;

end

end

toc%simulationtime

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1