请教下OFDM系统在matlab上的仿真程序!

请教下OFDM系统在matlab上的仿真程序!,第1张

%实现OFDM传输的仿真程序

para=128; %并行子信道的个数

fftlen:128; %FFT的长度

paradata=reshape(seldata,para,nd

*m1);

%QPSK调制

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

kmod=1/sqrt(2);

ichl=ich.*kmod;

qchl=qch.*kmod;

%In叩(离散傅里叶反变换)

X=ichl+qchl.*i:

y=ifft(x);

ich2=real(y);

qch2=imag(y);

%插入保护间隔

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

fftlen2=fftlen+gilen;

%衰减计算

spow=suln(ich3.2+qch3.“2)/nd./para;

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

attn=sqrt(attn);

%高斯自信道

[ich4,qeh4]=eomb(ich3,qch3,attn);

%接收部分

%去除保护间隔

[ieh5,,qeh5]=girem(ich4,qch4,fftlen2,gilen,

nd);

%FFr(离散傅里叶变换)

IX=ich5+qch5.*i:

ry=fit(Ⅸ);

ich6=real(ry);

qch6=imag(ry);

%QPSK解调

ieh7=ich6./kmod;

qch7=qch6./kmod;

[derrtxtata]=qpskdemod(ich7,qch7,para,nd,m1);

%并串变换

demodatal=reshape(demodata,I,para*nd*rnl);

%比特误码率(BER)

bit—errors=find(seldata~=demodatal);

bit—error—count 2 size(bit—e/TOES,2);

total—bits=size(demodatal,2);

bit—error—rate=bit—error—count/total—bits;

fprintf(7%f\n’,bit—eITor—rate)

%end offile

程序运行结果,输出误码率为:

>>0.037109

OFDM系统的功率峰均比是个统计概念。你要的程序在这本书里有的:

MIMO-OFDM Wireless Communication with Matlab。它的第七章讲的是PAPR如何降低,也有你要的程序。

matlab是要学习的,最起码你要会建立文件,会对其进行仿真。下面的程序可以直接复制到一个新的m文件中进行仿真。

clear

clc

SNR=10 % 信噪比

fl=128 % 设置FFT长度

Ns=6 %设置一个祯结构中OFDM信号的个数

para=128%设置并行传输的子载波个数

sr=250000%符号速率

br=sr.*2% 每个子载波的比特率

gl=32 %保护时隙的长度

Signal=rand(1,para*Ns*2)>0.5%产生0,1 随即序列,符号数为para*Ns*2

for i=1:para

for j=1:Ns*2

SigPara(i,j)=Signal(i*j)%串并变换

end

end

%QPSK调制,将数据分为两个通道

for j=1:Ns

ich(:,j)=SigPara(:,2*j-1)

qch(:,j)=SigPara(:,2*j)

end

kmod=1./sqrt(2)

ich1=ich.*kmod

qch1=qch.*kmod

x=ich1+qch1.*sqrt(-1) %频域数据变时域

y=ifft(x)

ich2=real(y)

qch2=imag(y)

%插入保护间隔

ich3=[ich2(fl-gl+1:fl,:)ich2]

qch3=[qch2(fl-gl+1:fl,:)qch2]

%并串变换

ich4=reshape(ich3,1,(fl+gl)*Ns)

qch4=reshape(qch3,1,(fl+gl)*Ns)

%形成复数发射数据

TrData=ich4+qch4.*sqrt(-1)

%接收机

%加入高斯白噪声

ReData=awgn(TrData,SNR,'measured')

%接收端

%移去保护间隔

idata=real(ReData)

qdata=imag(ReData)

idata1=reshape(idata,fl+gl,Ns)

qdata1=reshape(qdata,fl+gl,Ns)

idata2=idata1(gl+1:gl+fl,:)

qdata2=qdata1(gl+1:gl+fl,:)

%FFT

Rex=idata2+qdata2*sqrt(-1)

ry=fft(Rex)

ReIChan=real(ry)

ReQChan=imag(ry)

ReIchan=ReIChan/kmod

ReQchan=ReQChan/kmod

%QPSK逆映射

for j=1:Ns

RePara(:,2*j-1)=ReIChan(:,j)

RePara(:,2*j)=ReQChan(:,j)

end

ReSig=reshape(RePara,1,para*Ns*2)

%符号抽样判决

ReSig=ReSig>0.5

figure(1)

subplot(2,1,1),stem(ReSig(1:20)),grid minor

title('resignal')

xlabel('x'),ylabel('y')

subplot(2,1,2),stem(Signal(1:20)),grid

title('signal')

这是一个最基本的OFDM系统仿真,可以与OFDM系统框图对照理解,希望能帮到你。

另外,团IDC网上有许多产品团购,便宜有口碑


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12122656.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存