CFO误码率仿真源码

% Effect of Carrier Frequency Offset on OFDM system simulation under AWGN
% Prepared by Hiren gami

clc 
clear all

nDSC = 256;     % Number of data sub-carriers
nCP = 16;       % Number of sub-carriers in cyclic prefix
nFFT = 256; 
nTot = nFFT+nCP;
EbN0dB = 0:2:10;
EsN0dB = EbN0dB + 10*log10(nDSC/nFFT) + 10*log10(nFFT/nTot); 
CFO = 0:0.05:0.2;           
BER = zeros(1,length(EbN0dB));
MC =5000;

for ii = 1:length(CFO)
    
    for n = 1:length(EbN0dB)
        snr = EbN0dB(n);
        berrors = 0;tic;
        for mc = 1:MC
            x = rand(1,nDSC)>0.5;
            xt = 2*x -1; 
            xt = (nFFT/sqrt(nDSC))*ifft(fftshift(xt),nFFT); 
            xtt = [xt(end-nCP+1:end) xt];
            % Gaussian noise of unit variance, 0 mean
            nt = 1/sqrt(2)*(randn(1,nTot) + 1i*randn(1,nTot));
            yr = sqrt(nTot/nFFT)*xtt + 10^(-EsN0dB(n)/20)*nt;
            % applying CFO
            yr =(exp(1i*2*pi*CFO(ii)*(0:length(yr)-1)/nFFT)).*yr;
            % Receiver processing
            yr = yr(nCP+1:end);
            yr = (nDSC/sqrt(nFFT))*fftshift(fft(yr,nFFT));
            yr = yr > 0; % hard demodulation
            berrors = berrors + length(find((yr-x)~=0));
        end
        toc;
       BER(ii,n) = berrors/(nFFT*MC);
    end
    
end

semilogy(EbN0dB,BER,'-.*','LineWidth',2); hold on; grid on; 
title('BER sensitivity Vs CFO under AWGN');
% theoratical calculations
dataenc = 'nondiff';
EbNo = EbN0dB;
M = 2;
ThBer = berawgn(EbNo,'psk',M,dataenc);
semilogy(EbNo, ThBer,'-*r','LineWidth',2); xlabel('Eb/N0');ylabel('BER');

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值