%实现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网上有许多产品团购,便宜有口碑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)