Matlab内置误码率,求助这个误码率问题,为什么会达到40+%

%OFDM基本原理仿真

%依照老师要求采用QPSK调制

clear;clc;

%................................参数设置..............................

SNR=10;      %信噪比取值,以分贝(dB)为单位

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(1,i*j);

%串并变换,将随即产生的二进制矩阵变成行数为para,列数为2*Ns的矩阵

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=ich+qch1.*sqrt(-1);          %产生复信号

y=ifft(x);                     %通过傅里叶变换将频域信号转换为时域信号

ich2=real(y);                  %时域信号实部

qch2=imag(y);                  %时域信号虚部

%插入循环前缀作为保护间隔,前缀长度为gl

ich3=[ich2(fl-gl+1:fl,:);ich2];%实部

qch3=[qch2(fl-gl+1:fl,:);qch2];%虚部

%并串变换

ich4=reshape(ich3,1,(fl+gl)*Ns);%将ich3中的序列抽出,构成1行(fl+gl)*Ns列的ich4

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

%形成复数发射数据

Trdata=ich4+qch4.*sqrt(-1);

figure(1);%%%

subplot(2,1,1),stem(Trdata(1:50)),title('加入AWGN前部分序列样点');

%信道中加入高斯白噪声

Redata=awgn(Trdata,SNR,'measured','linear');%help中awgn的第三种用法

subplot(2,1,2),stem(Redata(1:50)),title('加入AWGN后部分序列样点');

%接收端

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);

%符号判决

j=0;

for i=1:length(ReSig)

if ReSig(1,i)>0.5

ReSig(1,i)=1;

else

ReSig(1,i)=0;

end

end

ber=sum(abs(Signal-ReSig))/(2*128*6);

fprintf('ber的估计值%d\n',ber);%就是这里的输出,误码率居然40+%

figure(3);%%%

subplot(2,1,1),stem(ReSig(1:100)),title('接收端接收到的序列(前100个点)'),grid;

subplot(2,1,2),stem(Signal(1:100)),title('原始序列(前100个点)'),grid;%但是对比输入输出的图的时候基本没有误码点的

我是小白~~~求各位帮忙,再有几天这个就交了~~实在是有点力不从心了啊

我来回答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值