📄 untitled2.m
字号:
%ofdm.m
%QPSK仿真实现OFDM传输系统
%---------定义参数--------
para=128; %并行传输的信道数(点数)
fftlen=128; %FFT长度
noc=128; %子载波数
nd=6; %每次循环含有的OFDM 符号数
ml=2; %调制电平:QPSK(二电平)
sr=4800; %符号速率
br=sr.*ml; %每载波的比特率
gilen=32; %保护间隔(点数)
%------------主循环部分---------
nloop2=100; %仿真循环次数
noe=0; %误码率
nod=0; %传输的数据数量
eop=0; %误组数
nop=0; %传输的分组数
%------------使用16QAM调制
snr=18; %信噪比
%for jjj=1:nloop1
% snr=snr+1;
%for iii=1:nloop2
%--------------发送部分--------
%--------------产生数据--------
BitsTx = floor(rand(1,para*4)*2);
%---------------------串并变换-------------
SymQAMtmp=zeros(para,4);
aa=1;
for ii=1:para
SymQAMtmp(aa,1)=BitsTx(4*aa-3);
SymQAMtmp(aa,2)=BitsTx(4*aa-2);
SymQAMtmp(aa,3)=BitsTx(4*aa-1);
SymQAMtmp(aa,4)=BitsTx(4*aa);
aa=aa+1;
end
%----------------------16QAM调制-------------
SymQAMtmptmp = bi2de(SymQAMtmp,2,'right-msb');
x=qammod(SymQAMtmptmp,16);
%-------------IFFT--------------
y=ifft(x,fftlen) ;
%-----------并串转换--------
paradata1=reshape(y,1,para);
ich2=real(paradata1);
qch2=imag(paradata1);
%------------插入保护间隔----------
[ich3,qch3]=giins(ich2,qch2,para,gilen);
para1=para+gilen;
paradata2=ich3+qch3.*i;
%--------------加入加性高斯白噪声--------------
paradata3=awgn(paradata2,snr,'measured');
%--------------接收部分-------------
%-----------------移除保护间隔---------------
ich4=real(paradata3);
qch4=imag(paradata3);
[ich5temp,qch5temp]=girem(ich4,qch4,para1,gilen);
%------------串并转换—————————
ich5=reshape(ich5temp,para,1);
qch5=reshape(qch5temp,para,1);
%----------------FFT----------------
rx=ich5+qch5.*i;
ry=fft(rx,para);
ich6=real(ry);
qch6=real(ry);
%---------------16QAM解调----------
[demodata]=qamdemod(ry,16);
%------------------并串转换------------
demodata1=de2bi(demodata).';
demodata2=reshape(demodata1,1,para*4);
%-------------------误比特率(BER)-------------
%即使的误码和数据
noe2=sum(abs(demodata2-BitsTx));
%将接受解调后的信号与原始信号相比较,累计不一样的
nod2=length(BitsTx); %发送信号总长度
%累计误码数和总的数据
noe=noe+noe2;
%因为是进行了nloop次的循环,所以把每次循环的数据和误码数积累起来
nod=nod+nod2;
%end
ber=noe/nod %总的误码率
figure(7);
plot(ry,'.');
axis([-8,8,-8,8]);
title('16-QAM星座图');
%grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -