资源简介
使用matlab仿真简化的基于OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术的802.11a系统及参数说明。
代码片段和文件信息
%IEEE 802.11a系统的仿真
clear all
%%%参数设置部分%%%
Nsp = 52; %系统子载波数,(不包括直流载波)
Nfft = 64; %FFT长度
Ncp = 16; %循环前缀长度
Ns = Nfft+Ncp; %一个完整OFDM符号长度
noc = 53; %包含直流载波的总的子载波数
Nd = 6; %每帧包含的OFDM符号数(不包括训练符号)
M1 = 4; %QPSK调制
M2 = 16; %16-QAM调制
sr = 250000; %OFDM符号速率
EbN0 = 0:2:30; %归一化信噪比
Nfrm = 10000; %每种信噪比下的仿真帧数
ts = 1/sr/Ns; %OFDM符号抽样时间间隔
t = 0:ts:(Ns*(Nd+1)*Nfrm-1)*ts; %抽样时刻
fd = 100; %最大多普勒频移
h = rayleigh(fdt); %生成单径Rayleigh衰落信道
%训练符号频域数据,采用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];
Preamble1=zeros(1Nfft);
Preamble1(2:27)=Preamble(27:end); %训练符号重排后的数据???
Preamble1(39:end)=Preamble(1:26);
preamble1=ifft(Preamble1); %训练符合时域数据???
preamble1=[preamble1(Nfft-Ncp+1:end) preamble1]; %加入循环前缀
%%%仿真循环%%%
for ii=1:length(EbN0)
%%%发射机部分%%%
msg1=randsrc(NspNd*Nfrm[0:M1-1]); %QPSK信息数据??
msg2=randsrc(NspNd*Nfrm[0:M2-1]); %16-QAM信息数据??
data1=pskmod(msg1M1pi/4); %QPSK调制??
data2=qammod(msg2M2)/sqrt(10); %16-QAM调制并归一化
data3=zeros(NfftNd*Nfrm); %根据FFT要求,对数据重排??????????
data4=zeros(NfftNd*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; %清除不需要的临时变量?
data3=ifft(data3); %IFFT变换
data4=ifft(data4);
data3=[data3(Nfft-Ncp+1:end:);data3]; %加入循环前缀
data4=[data4(Nfft-Ncp+1:end:);data4];
spow1=norm(data3‘fro‘).^2/(Nsp*Nd*Nfrm); %计算数据符号能量???????????
spow2=norm(data4‘fro‘).^2/(Nsp*Nd*Nfrm);
data5=zeros(Ns(Nd+1)*Nfrm); %加入训练符号???
data6=data5;
for indx=1:Nfrm
data5(:(indx-1)*(Nd+1)+1)=preamble1.‘;
data5(:(indx-1)*(Nd+1)+2:indx*(Nd+1))=data3(:(indx-1)*Nd+1:indx*Nd);
data6(:(indx-1)*(Nd+1)+1)=preamble1.‘;
data6(:(indx-1)*(Nd+1)+2:indx*(Nd+1))=data4(:(indx-1)*Nd+1:indx*Nd);
end
clear data3 data4
data5=reshape(data51Ns*(Nd+1)*Nfrm); %并串变换
data6=reshape(data61Ns*(Nd+1)*Nfrm);
sigma1=sqrt(1/2*spow1/log2(M1)*10.^(-EbN0(ii)/10)); %根据EbN0计算噪声标准差????
sigma2=sqrt(1/2*spow2/log2(M2)*10.^(-EbN0(ii)/10));
for indx=1:Nfrm
dd1=data5((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1)); %当前帧的发射数据?????
dd2=data6((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1));
hh=h((indx-1)*Ns*(Nd+1)+1:indx*Ns*(Nd+1)); %当前帧对应的信道参数??
%信号通过单径Rayleigh衰落信道,并加入高斯白噪声????????????????
r1=hh.*dd1+sigma1*(randn(1length(dd1))+j*randn(1length(dd1)));
r2=hh.*dd2+sigma2*(randn(1length(dd2))+j*randn(1length(dd2)));
r1=reshape(r1NsNd+1); %串并变换
r2=reshape(r2NsNd+1);
r1=r1(Ncp+1:end:); %移除循环前缀
r2=r2(Ncp+1:end:);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-04-09 13:13 Matlab仿真IEEE 802.11a系统\
文件 5352 2020-04-09 12:50 Matlab仿真IEEE 802.11a系统\OFDM_802.11a.m
文件 479 2020-04-09 13:06 Matlab仿真IEEE 802.11a系统\rayleigh.m
文件 32891 2020-04-09 13:05 Matlab仿真IEEE 802.11a系统\Simulation results.png
文件 228126 2020-04-09 13:11 Matlab仿真IEEE 802.11a系统\System parameters.png
- 上一篇:目标跟踪的MATLAB代码
- 下一篇:Leslie人口预测代码
相关资源
- MIMO_OFDM联合仿真的matlab 源程序很完整
- OFDM瑞利衰落信道下的MATLAB程序
- 降低ofdm系统中papr改进pts算法仿真
- DCO_OFDM程序代码
- OFDM盲信道估计/基于子空间的盲信道估
- matlabcode(与瑞利信道相关的OFDM仿真)
- 自适应OFDM_malab仿真程序
- OFDM中LS和DFT信道估计算法matlab程序实
- mimo-ofdm系统fft方法的实现
- OFDM误码率
- MIMO_OFDM.m
- OFDM峰平比及matlab程序仿真
- OFDMA的matlab仿真
-
ofdm的simuli
nk,matlab仿真 - 通信仿真 ofdm-bpsk
- OFDM中LS和DFT信道估计算法matlab程序实
- 星座图扩展法Active Constellation Extensi
-
OFDM_16QAM_simuli
nk - 基于DVB-T标准的OFDM调制技术的MATLAB源
- SC_OFDMA的Matlab仿真
- OFDM物理层发射机_接收机模型matlab代码
- 峰值功率比
- f-ofdm.txt
- mimo ofdm无线通信技术及matlab实现 源代
- 基于matlab仿真的ofdm系统基带信号在多
-
Fiber ba
sed OFDM Transmission - ofdm tr
- OFDM系统的matlab实现
- OFDM出图
- 经典OFDM系统的脉冲整型(ofdm pulse s
评论
共有 条评论