• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: OFDM  BER  

资源简介

OFDM基本框架程序,BER误码率,多径衰落

资源截图

代码片段和文件信息

% OFDM_basic.m

%MIMO-OFDM Wireless Communications with MATLAB㈢   Yong Soo Cho Jaekwon Kim Won Young Yang and Chung G. Kang
%?2010 John Wiley & Sons (Asia) Pte Ltd

clear all
NgType=1; % NgType=1/2 for cyclic prefix/zero padding
if NgType==1
    nt=‘CP‘;
else
    if NgType==2
        nt=‘ZP‘;
    end
    Ch=0;  % Ch=0/1 for AWGN/multipath channel
    if Ch==0
        chType=‘AWGN‘;
        Target_neb=100;
    else
        chType=‘CH‘;   %CH=1 多径衰落
        Target_neb=500;
    end
    figure(Ch+1)clf
    PowerdB=[0 -8 -17 -21 -25]; % Channel tap power profile ‘dB‘
    Delay=[0 3 5 6 8];          % Channel delay ‘sample‘
    Power=10.^(PowerdB/10);     % Channel tap power profile ‘linear scale‘
    Ntap=length(PowerdB);       % Chanel tap number
    Lch=Delay(end)+1;           %Channel length
    Nbps=4; M=2^Nbps;  % Modulation order=2/4/6 for QPSK/16QAM/64QAM
    Nfft=64;           % FFT size
    Ng=3; %Nfft/4;         % Ng=0: Guard interval length
    Ng=Nfft/4;
    Nsym=Nfft+Ng;      % Symbol duration
    Nvc=Nfft/4;        % Nvc=0: no virtual carrier
    Nused=Nfft-Nvc;
    
    EbN0=[0:5:20];    % EbN0
    N_iter=1e5;       % Number of iterations for each EbN0
    Nframe=3;         % Number of symbols per frame每一帧符号数
    sigPow=0;         % Signal power initialization
    file_name=[‘OFDM_BER_‘ chType ‘_‘ nt ‘_‘ ‘GL‘ num2str(Ng) ‘.dat‘];
    fid=fopen(file_name ‘w+‘);
    norms=[1 sqrt(2) 0 sqrt(10) 0 sqrt(42)];     % BPSK 4-QAM 16-QAM
    for i=0:length(EbN0)
        randn(‘state‘0);
        rand(‘state‘0);
        Ber2=ber(); % BER initialization
        Neb=0;
        Ntb=0; % Initialize the number of error/total bits
        for m=1:N_iter
            % Tx______________________________________________________________
            X= randint(1Nused*NframeM); % bit: integer vector
            Xmod= qammod(XM0‘gray‘)/norms(Nbps);
            if NgType~=2
                x_GI=zeros(1Nframe*Nsym);
            elseif NgType==2
                x_GI= zeros(1Nframe*Nsym+Ng);
                % Extend an OFDM symbol by Ng zeros
            end
            kk1=[1:Nused/2];
            kk2=[Nused/2+1:Nused];
            kk3=1:Nfft;
            kk4=1:Nsym;
            for k=1:Nframe
                if Nvc~=0
                    X_shift= [0 Xmod(kk2) zeros(1Nvc-1) Xmod(kk1)];
                else
                    X_shift= [Xmod(kk2) Xmod(kk1)];
                end
                x= ifft(X_shift);
                x_GI(kk4)= guard_interval(NgNfftNgTypex);
         

评论

共有 条评论