西南交通大学移动通信OFDM仿真实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用Matlab软件,分别建立OFDM基带传输系统,仿真其在Rayleigh信道下的系统BER性能。
clear all
nFFT = 64; % 快速傅里叶变化大小
nDSC = 52; % 载波数目
nBitPerSym = 52; % 每个OFDM符号所含信息量(与bpsk的子载波数目相同) nSym = 10^4; % 信元数
EbN0dB = [0:35]; % EB/N0
EsN0dB = EbN0dB + 10*log10(nDSC/nFFT) + 10*log10(64/80); % EB/N0--->SNR for ii = 1:length(EbN0dB) % 信号产生
ipBit = rand(1,nBitPerSym*nSym) > 0.5; % 等概率随机生成信号0,1
ipMod = 2*ipBit-1; % BPSK调制0 --> -1, 1 --> +1
ipMod = reshape(ipMod,nBitPerSym,nSym).'; % 分组为多个符号% 调制符号的子载波范围分配[-26 至-1, +1 至+26]
xF=[zeros(nSym,6)ipMod(:,[1:nBitPerSym/2])zeros(nSym,1)ipMod(:,[nBitPerSy m/2+1:nBitPerSym]) zeros(nSym,5)] % 进行IFFT变化,进行符号功率归一化到1 xt = (nFFT/sqrt(nDSC))*ifft(fftshift(xF.')).'; % 附加循环前缀为T/4
xt = [xt(:,[49:64]) xt]; % 设定10个多径传输信道
nT ap = 10;
ht = 1/sqrt(2)*1/sqrt(nT ap)*(randn(nSym,nT ap) + j*randn(nSym,nT ap)); % 计算并存储用于接受的信道频响
hF = fftshift(fft(ht,64,2)); %将fft的dc分量移到频谱中心% 与随即信道的每个码元卷积
for jj = 1:nSym
xht(jj,:) = conv(ht(jj,:),xt(jj,:));
end
xt = xht; % 连接多个码元形成长向量
xt = reshape(xt.',1,nSym*(80+nT ap-1)); % 生成服从标准正态分布的高斯噪声
nt = 1/sqrt(2)*[randn(1,nSym*(80+nT ap-1)) + j*randn(1,nSym*(80+nT ap-1))]; % 附加噪声,由于循环前缀导致的能量消耗用sqrt(80/64)补足
yt = sqrt(80/64)*xt + 10^(-EsN0dB(ii)/20)*nt; % 接收机
yt = reshape(yt.',80+nT ap-1,nSym).'; % 将接受的信号进行
yt = yt(:,[17:80]); % 去除循环前缀% 转换到频域yF = (sqrt(nDSC)/nFFT)*fftshift(fft(yt.')).'; % 通过已知的频响进行均衡
yF = yF./hF; % 提取所需载波
yMod = yF(:,[6+[1:nBitPerSym/2] 7+[nBitPerSym/2+1:nBitPerSym] ]); % BPSK 解调% +ve --> 1, -ve --> -1
ipModHat = 2*floor(real(yMod/2)) + 1;
ipModHat(find(ipModHat>1)) = +1;
ipModHat(find(ipModHat<-1)) = -1; % 模数变换
ipBitHat = (ipModHat+1)/2;
ipBitHat = reshape(ipBitHat.',nBitPerSym*nSym,1).'; % 计算错误个数
nErr(ii) = size(find(ipBitHat - ipBit),2);
end
simBer = nErr/(nSym*nBitPerSym); %计算误码率
EbN0Lin = 10.^(EbN0dB/10); %线性化信噪比theoryBer = 0.5.*(1-sqrt(EbN0Lin./(EbN0Lin+1)));%理论信噪比%绘图
close all;
figure
semilogy(EbN0dB,theoryBer,'bs-','LineWidth',2);
hold on
semilogy(EbN0dB,simBer,'mx-','LineWidth',2);
axis([0 35 10^-5 1]) grid on
legend('Rayleigh-Theory', 'Rayleigh-Simulation');
xlabel('Eb/No,dB') ylabel('BER')
title('BPSK在OFDM系统下的BER')。