网站开发都需要什么工具,wordpress减少数据库查询,全国网站建设排名,怎么黑进网站后台#xff08;内容源自详解MATLAB#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第九章内容#xff0c;有兴趣的读者请阅读原书#xff09; clear all
%%%%%%%参数设计部分%%%%%%%Nsp52;%系统子载波数#xff08;不包括直流载波#xff09;
Nfft64;%FFT长度
Ncp16;… 内容源自详解MATLABSIMULINK 通信系统建模与仿真 刘学勇编著第九章内容有兴趣的读者请阅读原书 clear all
%%%%%%%参数设计部分%%%%%%%Nsp52;%系统子载波数不包括直流载波
Nfft64;%FFT长度
Ncp16;%循环前缀长度
NsNfftNcp;%一个完整OFDM长度
noc53;%包含直流载波的总的子载波数
Nd6;%每帧包含的OFDM符号数不包括训练符号
M14;%QPSK调制
M216;%16QAM调制
sr250000;%OFDM符号速率
EbN00:2:30;%归一化信噪比
Nfrm1000;%每种信噪比下的仿真帧数
ts1/sr/Ns;%OFDM抽样时间间隔
t0:ts:(Ns*(Nd1)*Nfrm-1)*ts;%抽样时刻
fd100;%最大多普勒平移
hrayleigh(fd,t);%生成单径瑞利信道
h1sqrt(2/3)*h;%生成二径衰落信道1
h2sqrt(1/3)*rayleigh(fd,t);
h2[zeros(1,4) h2(1:end-4)];%训练符号频域数据采用802.11a中的长训练符号数据
Preamble[1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 ...1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1];
Preamble1zeros(1,Nfft);
Preamble1(2:27)Preamble(27:end);%训练符号重拍后的数据
Preamble1(39:end)Preamble(1:26);
preamble1ifft(Preamble1);%训练符号时域数据
preamble1[preamble1(Nfft-Ncp1:end) preamble1];%加入循环前缀%%%%%%%仿真循环%%%%%%%
for ii1:length(EbN0)%******发射机部分******msg1randsrc(Nsp,Nd*Nfrm,[0:M1-1]);%QPSK信息数据msg2randsrc(Nsp,Nd*Nfrm,[0:M2-1]);%16-QAM信息数据data1pskmod(msg1,M1,pi/4);%QPSK调制data2qammod(msg2,M2)/sqrt(10);%16QAM调制并归一化data3zeros(Nfft,Nd*Nfrm);%根据FFT要求对数据重排data4zeros(Nfft,Nd*Nfrm);data3(2:27,:)data1(27:end,:);data3(39:end,:)data1(1:26,:); data4(2:27,:)data2(27:end,:);data4(39:end,:)data2(1:26,:);clear data1 data2;%清除不必要的临时变量data3ifft(data3);%IFFT变换data4ifft(data4);data3[data3(Nfft-Ncp1:end,:);data3];%加入循环前缀data4[data4(Nfft-Ncp1:end,:);data4];spow1norm(data3,fro).^2/(Nsp*Nd*Nfrm);%计算数据符号能量spow2norm(data4,fro).^2/(Nsp*Nd*Nfrm);data5zeros(Ns,(Nd1)*Nfrm);%加入训练符号data6data5;for indx1:Nfrmdata5(:,(indx-1)*(Nd1)1)preamble1.;data5(:,(indx-1)*(Nd1)2 :indx*(Nd1))data3(:,(indx-1)*Nd1:indx*Nd);data6(:,(indx-1)*(Nd1)1)preamble1.;data6(:,(indx-1)*(Nd1)2 :indx*(Nd1))data4(:,(indx-1)*Nd1:indx*Nd);endclear data3 data4data5reshape(data5,1,Ns*(Nd1)*Nfrm);%并串变换data6reshape(data6,1,Ns*(Nd1)*Nfrm);data51zeros(1,length(data5));data61zeros(1,length(data6));data51(5:end)data5(1:end-4);data61(5:end)data6(1:end-4);sigma1sqrt(1/2*spow1/log2(M1)*10.^(-EbN0(ii)/10));%根据EbN0计算噪声标准差sigma2sqrt(1/2*spow2/log2(M2)*10.^(-EbN0(ii)/10));for indx1:Nfrmdd1data5((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));%当前帧的发射数据dd2data6((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));dd3data51((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));dd4data61((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));hhh((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));%当前帧的单径信道参数hh1h1((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));%当前帧的二径信道参数hh2h2((indx-1)*Ns*(Nd1)1:indx*Ns*(Nd1));%信号通过单径瑞利衰落信道并加入高斯白噪声2r1hh.*dd1sigma1*(randn(1,length(dd1))j*randn(1,length(dd1)));r2hh.*dd2sigma2*(randn(1,length(dd2))j*randn(1,length(dd2))); %信号通过2径瑞利衰落信道并加入高斯白噪声r11hh1.*dd1hh2.*dd3sigma1*(randn(1,length(dd1))j*randn(1,length(dd1)));r21hh1.*dd2hh2.*dd4sigma2*(randn(1,length(dd2))j*randn(1,length(dd2))); r1reshape(r1,Ns,Nd1);%串并变换r2reshape(r2,Ns,Nd1);r11reshape(r11,Ns,Nd1);%串并变换r21reshape(r21,Ns,Nd1); r1r1(Ncp1:end,:);%移除循环前缀r2r2(Ncp1:end,:);r11r11(Ncp1:end,:);r21r21(Ncp1:end,:);R1fft(r1);%fft运算R2fft(r2);R11fft(r11);R21fft(r21);R1[R1(39:end,:);R1(2:27,:)];R2[R2(39:end,:);R2(2:27,:)];R11[R11(39:end,:);R11(2:27,:)];R21[R21(39:end,:);R21(2:27,:)];HH1(Preamble.)./R1(:,1);%信道估计HH2(Preamble.)./R2(:,1);HH11(Preamble.)./R11(:,1);HH21(Preamble.)./R21(:,1);HH1HH1*ones(1,Nd);HH2HH2*ones(1,Nd);HH11HH11*ones(1,Nd);HH21HH21*ones(1,Nd);x1R1(:,2:end).*HH1;x2R2(:,2:end).*HH2;x3R11(:,2:end).*HH11;x4R21(:,2:end).*HH21;x1pskdemod(x1,M1,pi/4);%数据解调x2qamdemod(x2.*sqrt(10),M2);x3pskdemod(x3,M1,pi/4);%数据解调x4qamdemod(x4.*sqrt(10),M2);%统计一帧中的错误比特数[neb1(indx),temp]biterr(x1,msg1(:,(indx-1)*Nd1:indx*Nd),log2(M1));[neb2(indx),temp]biterr(x2,msg2(:,(indx-1)*Nd1:indx*Nd),log2(M2));[neb3(indx),temp]biterr(x3,msg1(:,(indx-1)*Nd1:indx*Nd),log2(M1));[neb4(indx),temp]biterr(x4,msg2(:,(indx-1)*Nd1:indx*Nd),log2(M2));
end
ber1(ii)sum(neb1)/(Nsp*log2(M1)*Nd*Nfrm);%理想信道估计的误比特率
ber2(ii)sum(neb2)/(Nsp*log2(M2)*Nd*Nfrm);ber3(ii)sum(neb3)/(Nsp*log2(M1)*Nd*Nfrm);%根据训练符号信道估计的误比特率
ber4(ii)sum(neb4)/(Nsp*log2(M2)*Nd*Nfrm);endsemilogy(EbN0,ber1,-ro,EbN0,ber3,-rv,EbN0,ber2,-r*,EbN0,ber4,-rx)
grid on
title(OFDM系统误比特率性能)
legend(QPSK单径信道,QPSK2径信道,16-QAM单径信道,16-QAM二径信道)
xlabel(信噪比(EbN0))
ylabel(误比特率)
1生成2径衰落信道
2径衰落信道表示信号同时通过2个信道这里的信道设定如下
两径信道的能量之和和单径信道能量之和相等
两径信道中第二个信道的能量比第一个信道的能量低3dB也就是能量减半
又因为信道的能量是信道振幅的平方设两径信道第一个信道振幅为a第二个振幅为b
所以a方b方1单径瑞利衰落信道振幅为1
a方2*b方
所以a根号下2/3b根号下1/3。
接下来对第二个信道进行延时处理延时就是在信道前面加0加0会导致信道的长度变长将超过指定长度的多余部分直接删掉 2信号通过2径衰落信道
即为信号*2径中的第一个信道信号*2径中的第二个信道噪声这里噪声加的是两个信道的总体噪声
%信号通过2径瑞利衰落信道并加入高斯白噪声 r11hh1.*dd1hh2.*dd3sigma1*(randn(1,length(dd1))j*randn(1,length(dd1))); r21hh1.*dd2hh2.*dd4sigma2*(randn(1,length(dd2))j*randn(1,length(dd2)));
dd1QPSK调制得到的单帧信号
dd2QAM调制得到的单帧信号
dd3,QPSK调制经过处理与延时的信道一一对应的单帧信号
因为信道和信号的所有元素要求一一对应通过信道前面加0实现了信道的延时为了实现一一对应也需要在信号前面加相同数量的0
dd4QAM调制经过处理与延时的信道一一对应的单帧信号 其它内容的推导可以见上一篇文章