% PILOT BASED CHANNEL ESTIMATION (FFT BASED) FOR OFDM SYSTEMS
close all
clear all
clc
SNR_dB = 40;% SNR PER BIT
NUM_FRAMES = 10^2;
FFT_LEN = 1024;
NUM_PILOT = 256;
NUM_BIT = 2*(FFT_LEN-NUM_PILOT); % NUMBER OF DATA BITS
CHAN_LEN = 10; % NUMBER OF CHANNEL TAPS
CP_LEN = CHAN_LEN-1; % LENGTH OF THE CYCLIC PREFIX
FADE_VAR_1D = 0.5; % 1D FADE VARIANCE OF THE CHANNEL
FADE_STD_DEV = sqrt(FADE_VAR_1D); % STANDARD DEVIATION OF THE FADING CHANNEL
% SNR PER BIT PARAMETERS - OVERALL RATE IS 2
SNR = 10^(0.1*SNR_dB); % LINEAR SCALE
NOISE_VAR_1D = 0.5*2*2*CHAN_LEN*FADE_VAR_1D/(2*SNR*FFT_LEN); % 1D AWGN NOISE VARIANCE
NOISE_STD_DEV = sqrt(NOISE_VAR_1D); % NOISE STANDARD DEVIATION
% PILOT AND DATA INDICES IN OFDM FRAME
PILOT_INDEX = 1:FFT_LEN/NUM_PILOT:FFT_LEN; % PILOT POSITION INDICES
DATA_INDEX = 1:FFT_LEN;
DATA_INDEX(PILOT_INDEX) = []; % DATA POSITION INDICES
tic()
C_BER = 0; % bit errors in each frame
for FRAME_CNT = 1:NUM_FRAMES
%---- TRANSMITTER -----------------------------------------
% SOURCE
A = randi([0 1],1,NUM_BIT);
% QPSK MAPPING
QPSK_SEQ = 1-2*A(1:2:end) + 1i*(1-2*A(2:2:end));
F_SIG_NO_CP = zeros(1,FFT_LEN); % F STANDS FOR FREQUENCY DOMAIN
F_SIG_NO_CP(DATA_INDEX) = QPSK_SEQ;
F_SIG_NO_CP(PILOT_INDEX) = (1+1i)*ones(1,NUM_PILOT);
% IFFT
T_SIG_NO_CP = ifft(F_SIG_NO_CP);
% INSERTING CYCLIC PREFIX
T_SIG_CP = [T_SIG_NO_CP(end-CP_LEN+1:end) T_SIG_NO_CP];
%--------------- CHANNEL -----------------------------------------
% RAYLEIGH FREQUENCY SELECTIVE FADING CHANNEL
FADE_CHAN = normrnd(0,FADE_STD_DEV,1,CHAN_LEN)+1i*normrnd(0,FADE_STD_DEV,1,CHAN_LEN);
% FADE CHANNEL OUTPUT
CHAN_OP_TEMP = conv(T_SIG_CP,FADE_CHAN);
% AWGN
AWGN = normrnd(0,NOISE_STD_DEV,1,FFT_LEN+CP_LEN+CHAN_LEN-1)+1i*normrnd(0,NOISE_STD_DEV,1,FFT_LEN+CP_LEN+CHAN_LEN-1);
% AWGN OUTPUT
T_REC_SIG = CHAN_OP_TEMP + AWGN;
%---------------- RECEIVER ------------------------------------------
% CP & TRANSIENT SAMPLES REMOVAL
T_REC_SIG(1:CP_LEN) = [];
T_REC_SIG_NO_CP = T_REC_SIG(1:FFT_LEN);
% PERFORMING THE FFT
F_REC_SIG_NO_CP = fft(T_REC_SIG_NO_CP);
%--------------------------------------------------------------------------
% FFT BASED CHANNEL ESTIMATION
E_F_PILOT_POS = F_REC_SIG_NO_CP(PILOT_INDEX)./(1+1i); % 1-TAP EQUALIZATION
E_T_PILOT_POS = ifft(E_F_PILOT_POS); % L_p point IFFT
% DISCARDING SAMPLES AFTER LOCATION CHAN_LEN
E_H_CHAN_LEN = E_T_PILOT_POS(1:CHAN_LEN);
% ZERO PADDING AND TAKING ITS IIT
E_F_H = fft(E_H_CHAN_LEN,FFT_LEN); % zero padding and FFT_LEN point FFT
% CHANNEL SUBCARRIERS AT DATA POSITIONS
E_F_H_DATA_POS = E_F_H(DATA_INDEX);
%--------------------------------------------------------------------------
% ML DETECTION
QPSK_SYM = [1+1i 1-1i -1+1i -1-1i];
QPSK_SYM1 = QPSK_SYM(1)*ones(1,FFT_LEN-NUM_PILOT);
QPSK_SYM2 = QPSK_SYM(2)*ones(1,FFT_LEN-NUM_PILOT);
QPSK_SYM3 = QPSK_SYM(3)*ones(1,FFT_LEN-NUM_PILOT);
QPSK_SYM4 = QPSK_SYM(4)*ones(1,FFT_LEN-NUM_PILOT);
DIST = zeros(4,FFT_LEN-NUM_PILOT);
DIST(1,:)=(abs(F_REC_SIG_NO_CP(DATA_INDEX) - E_F_H_DATA_POS.*QPSK_SYM1)).^2;
DIST(2,:)=(abs(F_REC_SIG_NO_CP(DATA_INDEX) - E_F_H_DATA_POS.*QPSK_SYM2)).^2;
DIST(3,:)=(abs(F_REC_SIG_NO_CP(DATA_INDEX) - E_F_H_DATA_POS.*QPSK_SYM3)).^2;
DIST(4,:)=(abs(F_REC_SIG_NO_CP(DATA_INDEX) - E_F_H_DATA_POS.*QPSK_SYM4)).^2;
% COMPARING EUCLIDEAN DISTANCE
[~,INDICES] = min(DIST,[],1);
% MAPPING INDICES TO QPSK SYMBOLS
DEC_QPSK_MAP_SYM = QPSK_SYM(INDICES);
% DEMAPPING QPSK SYMBOLS TO BITS
DEC_A = zeros(1,NUM_BIT);
DEC_A(1:2:end) = real(DEC_QPSK_MAP_SYM)<0;
DEC_A(2:2:end) = imag(DEC_QPSK_MAP_SYM)<0;
% CALCULATING BIT ERRORS IN EACH FRAME
C_BER = C_BER + nnz(A-DEC_A);
end
toc()
BER = C_BER/(NUM_BIT*NUM_FRAMES)
没有合适的资源?快使用搜索试试~ 我知道了~
基于FFT的OFDM系统信道估计Matlab实现.rar
共1个文件
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 79 浏览量
2024-10-10
10:58:35
上传
评论
收藏 2KB RAR 举报
温馨提示
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
资源推荐
资源详情
资源评论
收起资源包目录
基于FFT的OFDM系统信道估计Matlab实现.rar (1个子文件)
基于FFT的OFDM系统信道估计Matlab实现
RUN__ME.m 4KB
共 1 条
- 1
资源评论
天天Matlab代码科研顾问
- 粉丝: 3w+
- 资源: 2297
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- json的合法基色来自红包东i请各位
- 项目采用YOLO V4算法模型进行目标检测,使用Deep SORT目标跟踪算法 .zip
- 针对实时视频流和静态图像实现的对象检测和跟踪算法 .zip
- 部署 yolox 算法使用 deepstream.zip
- 基于webmagic、springboot和mybatis的MagicToe Java爬虫设计源码
- 通过实时流协议 (RTSP) 使用 Yolo、OpenCV 和 Python 进行深度学习的对象检测.zip
- 基于Python和HTML的tb商品列表查询分析设计源码
- 基于国民技术RT-THREAD的MULTInstrument多功能电子测量仪器设计源码
- 基于Java技术的网络报修平台后端设计源码
- 基于Python的美食杰中华菜系数据挖掘与分析设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功