• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: OFDM  

资源简介

这是帮别人做毕业设计的代码,主要是验证OFDM是如何抗多径干扰的,代码采用了802.11a标准,采用了两种调制方式,QPSK,16QAM做的仿真,是可以运行的,最终有运行figure,

资源截图

代码片段和文件信息

clear all
%%%%%%%%%%%%% 参数设置部分 %%%%%%%%%%%%%%%%%

Nsp=52;             %系统子载波数(不包括直流载波)
Nfft=64;            % FFT 长度
Ncp=16;             % 循环前缀长度
Ns=Nfft+Ncp;        % 1个完整OFDM符号长度
noc=53;             % 包含直流载波的总的子载波数
Nd=6;               % 每帧包含的OFDM符号数(不包括训练符号)
M1=4;               % QPSK调制
M2=16;              % 16-QAM调制
sr=250000;          % OFDM符号速率
EbNo=0:2:30;       % 归一化信噪比
Nfrm=100;                         % 每种信噪比下的仿真帧数
ts=1/sr/Ns;                         % OFDM符号抽样时间间隔   产生一个点所需要的时间
t=0:ts:(Ns*(Nd+1)*Nfrm-1)*ts;      % 抽样时刻
fd=100;                             % 最大多普勒频移
h=rayleigh(fdt);                   % 生成单径Rayleigh衰落信道
h1=sqrt(2/3)*h;
h2=sqrt(1/3)*rayleigh(fdt);
h2=[zeros(14) h2(1:end-4)];%  延时4个采样周期


h3=sqrt(3/4)*rayleigh(fdt);%加了第三径
h3=[zeros(18) h3(1:end-8)];%  延时8个采样周期


%训练符号频域数据采用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);                   % 前导重排后的数据 后26个拿到前面
Preamble1(39:end)=Preamble(1:26);
preamble1=ifft(Preamble1);                          % 训练符号时域数据
preamble1=[preamble1(Nfft-Ncp+1:end) preamble1];    % 加入循环前缀

%%%%%%%%%%%%%%%%%%%%% 仿真循环 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for ii=1:length(EbNo)
     %**************************发射机部分 *****************************
    msg1=randsrc(NspNd*Nfrm[0:M1-1]);         % QPSK信息数据 /randsrc 产生均布数组
    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];

%     data3=[zeros(16600);data3];       % 不加循环前缀
%     data4=[zeros(16600);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;   %data6存第二路数据
    
    %data7=data5;   %data7存第三路数据 
    
    
    for indx=1:Nfrm%把训练符号加入到数据前面,组成训练和符号的结合体,一共100个
        data5(:(indx-1)*(Nd+1)+1)=preamble1.‘;
        data5(:(indx-1)*(Nd+1)+2:indx*(Nd+1))=data3(:(indx-1)*Nd+1:indx*Nd);%data3是QPSK经ifft后的数据
         
        data6(:(indx-1)*(Nd+1)+1)=preamble1.‘;
        data6(:(indx-1)*(Nd+1)+2:indx*(Nd+1))=data4(:(indx-1)*Nd+1:indx*Nd);%data4是16QAM经ifft后的数据
        
%         data7(:(indx-1)*(Nd+1)+1)=preamble1.‘;
%         data7(:(indx-1

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        9639  2013-04-13 17:08  新建文件夹\ofdmcode.m
     文件        1156  2010-07-31 14:01  新建文件夹\rayleigh.m
     目录           0  2013-05-05 20:41  新建文件夹\

评论

共有 条评论