clear all;
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% OFDMA下行链路仿真程序框架
% 变量命名原则:
% 1) 开头大写,表示常量或可调全局变量,控制程序流程
% 2) 小写加下划线,表示临时变量,传递数据
% 变量使用原则:
% 1) 不同用户的临时变量数据封装在cell结构体元素中,这是因为其数据长度可能不同
% 2) 频域矩阵,不同列表示时间(OFDM符号),不同行表示子载波,矩阵第三维表示不同天线的数据
% 3) 时域矩阵,不同列表示时间的样点, 如有不同行则表示时延(如时域信道响应矩阵), 第三维同样表示天线
% 4) 部分常量或可调全局变量,用struct结构体归类
% 函数命名和使用原则:
% 1) 小写加下划线命名
% 2) 部分函数可以根据输入变量个数实现函数功能重载
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 一. 初始化部分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 1.程序复杂度控制单元, 用结构体TurnOn, 和一些全局参数控制,
% 目的是针对特定需求, 降低运行复杂度, 使之在学术科研中发挥较大作用
% 打开相应模块功能---1,关闭相应模块功能---0
% 如关闭信道估计和补偿模块, 使用理想信道估计
ChannelEst = 1;
TurnOn = struct('ChannelEst',ChannelEst);
TurnOn.TimeDomainEq = 0;
% 使用收发天线数进行控制, 开关多天线模块(包括空时编码和多天线信道).
% 单天线多径信道,其功率时延谱, 多普勒频移等参数由结构体ch确定.
% 多天线多径信道,同一用户的不同收发天线假设功率时延谱相同,
% 发送天线数, 可选1,2和4. 发送天线为1则没有空时编码
N_Tx_ant = 1;
% 接收天线数, 可选1,2和4.
N_Rx_ant = 1;
% 如果关闭自适应调制模块,则无自适应调制,多用户使用固定子载波分配
% 如果只需要一个用户, 把系统参数定义单元变量N_user设置为1即可
TurnOn.AdptMod = 0;
% 用户数目
N_user = 1;
% 如关闭包检测和帧定时同步模块, 定时位置准确
TurnOn.Timing = 1;
% 如关闭频率同步模块, 载波频率偏差为 0 Hz, 不使用频偏纠正算法
TurnOn.FreqSyn = 1;
% 导频相位跟踪, 样值同步和相位噪声模块的开关
TurnOn.PhaseTrace = 0;
%TurnOn.SamplingSyn = 0;
%TurnOn.PhaseNoise = 0;
% 关闭信道编码模块,统计的BER,PER性能为无编码
TurnOn.ChannelCoding = 0;
% 建议: 不同重点的研究,使用不同的程序结构,关闭认为次要的模块.
% 如要评估系统总的性能,则可以打开所有模块
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2 参数定义单元
ParaDef = 0 ; % 0---自定义参数
% 1---使用本实验室设计的B3G下行链路系统参数
% 2---使用802.11a系统参数
if ParaDef == 1
set_B3G_para;
elseif ParaDef == 2
set_11a_para;
elseif ParaDef == 0 % 用户自定义
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.1 OFDMA收发机系统参数定义单元
% 命名规律: N_xxx: xxx的数目,为非负整数
% T_xxx: xxx的持续时间,为非负实数
% Idx_xxx: xxx的编号,为整数向量
% 一些约定俗成的表示, 如fc载频, Bw信道带宽等
% 1) 当TurnOn.AdptMod = 0 时表示所有子载波用调制方式:(不使用信道编码时)
% 1--BPSK调制, 2--QPSK调制,3--8PSK调制, 4--16QAM调制,6--64QAM调制
% 2) 当TurnOn.AdptMod = 1 时表示自适应调制,平均每个子载波上调制的比特数
% 此时最大只能设置为4, 否则调制器无法处理
Modulation = 2;
N_sym = 10; % 每帧中OFDM符号数,不包括两个前缀OFDM符号
N_frame = 10; % 仿真的帧个数
% 仿真循环开始的Eb_No,定义为每比特的能量Eb
% 和噪声的单边功率谱密度No的比值, dB值
Eb_NoStart = 0;
Eb_NoInterval = 2; % 仿真Eb/No的间隔值(dB)
Eb_NoEnd = 20; % 仿真Eb/No的终止值(dB)
fc = 5e9; % 载波频率(Hz)
Bw = 20e6; % 基带系统带宽(Hz)
fs = 20e6; % 基带抽样频率
T_sample = 1/fs; % 基带时域样点间隔(s)
N_subc = 1024; % OFDM 子载波总数
Idx_used = [-400:-1 1:400]; % 使用的子载波编号
Idx_pilot = [-400:25:-25 25:25:400]; % 导频子载波编号
% N_subc = 512; % OFDM 子载波总数
% Idx_used = [-200:-1 1:200]; % 使用的子载波编号
% Idx_pilot = [-200:25:-25 25:25:200]; % 导频子载波编号
% 802.11a的基本参数
% N_subc = 64; % OFDM 子载波总数
% Idx_used = [-26:-1 1:26]; % 使用的子载波编号
% Idx_pilot = [-21:14:-7 7:14:21]; % 导频子载波编号
N_used = length(Idx_used); % 使用的子载波数
N_pilot = length(Idx_pilot); % 导频的子载波数
N_data = N_used - N_pilot; % 导频的子载波数
Idx_data = zeros(1,N_data);
N_tran_sym = 2;
% 得到数据子载波的编号
m = 1; n = 1;
for k = 1:length(Idx_used)
if Idx_used(k) ~= Idx_pilot(m);
Idx_data(n) = Idx_used(k);
n = n + 1;
else
if m ~= N_pilot
m = m + 1;
end
end
end
% 为编程使用方便,调整子载波编号为从1开始,到子载波总数
Idx_used = Idx_used + N_subc/2 +1;
Idx_pilot = Idx_pilot + N_subc/2 +1;
Idx_data = Idx_data + N_subc/2 +1;
% 导频位置值
PilotValue = ones(N_pilot,1);
% OFDM循环前缀占有效FFT时间的比例
PrefixRatio = 1/4;
T_sym = T_sample*( (1 + PrefixRatio)*N_subc );
Es = 1; % 在16QAM, 64QAM调制方式下,符号能量都被归一化
Eb = Es/Modulation; % 每比特能量
% 假设每个用户的RS码参数相同,均为(204,188,8)
UserRS_Coding = repmat([255,239,8]',1,N_user);
TraceBackLen = 3; % 卷积码译码参数
% 假设每个用户的卷积码trellis 结构体相同
UserTrellis = repmat( poly2trellis(3,[6 7]),1,N_user );
N_ant_pair = N_Tx_ant * N_Rx_ant; % 收发天线对的数目
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.2 信道参数定义单元, 每个用户移动台参数不同
for u = 1:N_user
% 车辆运动速度, 单位:km/hr , 对应多普勒频移!!
speed = 0;
ch{u} = struct('Speed', speed);
% 多普勒频移, 单位: Hz
ch{u}.fd = ch{u}.Speed *(1e3/3.6e3)*fc/3e8;
% 假定用户的信道功率时延谱不同
% 每个用户信道每条径的功率
ch{u}.Power = 10.^([ 0 -6 -12 -18 -24 -30 ]'./10);
ch{u}.Power = ch{u}.Power/ sum(ch{u}.Power); % 功率归一化
% 每个用户每条径的时延:ns
ch{u}.Delay = [ 0 1400 2800 4200 5600 7000 ]'; % 最大多径时延 7us 室外信道
%ch{u}.Delay = [ 0 1000 2000 3000 4000 5000 ]'; % 最大多径时延 5us 室外信道
%ch{u}.Delay = [ 0 100 200 300 400 500 ]'; % 最大多径时延 500ns 室内信道参数
% 每个用户每条径对应的样点数
ch{u}.Delay_sample = round(ch{u}.Delay * 1e-9 * fs);
ch{u}.N_path = size(ch{u}.Power,1); % 径数
% 每个用户,各条径对应的莱斯衰落K因子
% ch{u}.Ricean_K = zeros(N_path,1) ;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.3 OFDMA收发机算法选择和参数定义单元
% 1) 信道估计: 单天线信道估计方法
% 1 - 基本LS算法; 2 - LS的DFT改进算法; 3 - 加判决反馈的LS-DFT
% 4 - 基本MMSE算法; 5 - MMSE的DFT改进算法; 6 - 加判决反馈的MMSE-DFT
% 7 - 使用SVD分解算法,8 - Robust算法
CE_Method = 1 ;
% 使用LS或MMSE的DFT改进算法时,所保留的子载波数
CE_SubcRemain = max(ch{u}.Delay_sample); % 最大多径时延对应的样点数
% 多天线信道估计方法
CE_Method2 = 1;
% 2) 自适应调制: ,当TurnOn.AdptMod == 1时,
% 1--自适应调制方法1, 给功率增加最小的子载波分配比特和功率, 子载波分配由AllocMethod确定
% 2--自适应调制方法2, 给误比特性能降低最小的子载波分配比特和增加功率, 子载波分配由AllocMethod确定
没有合适的资源?快使用搜索试试~ 我知道了~
MAtlab实现OFDM信道编码,调制,信道估计
共101个文件
fig:52个
m:43个
png:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2022-06-29
21:51:36
上传
评论
收藏 1.87MB ZIP 举报
温馨提示
1.版本:matlab2019a,不会运行可私信 2.领域:【OFDM通信】 3.内容: MAtlab实现OFDM信道编码,调制,信道估计 4.适合人群:本科,硕士等教研学习使用
资源推荐
资源详情
资源评论
收起资源包目录
MAtlab实现OFDM信道编码,调制,信道估计 (101个子文件)
BER_EbNo--4users_noAM_1tx1rx_noChannelCoding_idealCE_idealSyn_rayleigh_6tap_exp_noDoppler_BPSK.emf 22KB
BPSK_0HzDoppler_6tap_exp.fig 66KB
bpsk_awgn.fig 54KB
BPSK_0HzDoppler_6tap_exp.fig 28KB
BPSK_10HzDoppler_estimation_comparision.fig 25KB
BER_EbNo_LS_DFT_BPSK_0HzDoppler_6tapRayleigh.fig 25KB
BPSK_10kmhr_6tap_exp2.fig 23KB
BER_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming1_multiantenna1.fig 22KB
BER_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming1_multiantenna2.fig 22KB
BER_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming2_multiantenna1.fig 22KB
power_des_0Hz_BPSK.fig 20KB
power_des_0Hz.fig 20KB
BPSK_150kmhr_1symframe.fig 19KB
power_SNR_0Hz_BPSK2.fig 19KB
LS_DFT_freq_domain_noawgn.fig 15KB
LS_DFT_time_domain_noawgn.fig 15KB
LS_DFT_freq_domain.fig 15KB
jakes.fig 12KB
TimingErr_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming1_multiantenna2.fig 10KB
TimingErr_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming2_multiantenna1.fig 10KB
TimingErr_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming1_multiantenna1.fig 10KB
TimingErr_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming3_multiantenna1.fig 10KB
BER_EbNo_1tx4rx_MRC_BPSK_0kmhr.fig 9KB
BER_EbNo_1tx2rx_MRC_BPSK_0kmhr.fig 9KB
BER_EbNo_2tx2rx_STBC_MRC_QPSK_0kmhr.fig 9KB
BER_EbNo_LS_1tx2rx_QPSK_0kmhr_no_synch_err.fig 9KB
BER_EbNo_LS_1tx2rx_QPSK_0kmhr_frametiming3_multiantenna1.fig 9KB
MSE_EbNo_LS_BPSK_Okmhr.fig 9KB
BER_EbNo_1tx_2rx_MRC.fig 9KB
BER_EbNo_1tx2rx_MRC_BPSK_0kmhr.fig 9KB
QPSK_0HzDoppler_6tap_exp.fig 9KB
BER_EbNo_LS_BPSK_0HzDoppler_6tapRayleigh2.fig 9KB
MSE_EbNo_LS_DFT_BPSK_Okmhr.fig 9KB
BER_EbNo_1tx4rx_MRC_BPSK_0kmhr.fig 9KB
jakes_trunc.fig 8KB
untitled.fig 7KB
BER_EbNo--4users_noAM_1tx1rx_noChannelCoding_idealCE_idealSyn_rayleigh_6tap_exp_noDoppler_BPSK.fig 7KB
fading_strunc.fig 7KB
BPSK_50kmhr_6symperframe.fig 6KB
64qam_awgn_normalized.fig 6KB
power_SNR_0Hz_BPSK.fig 6KB
BPSK_50kmhr_6tap_exp2_10symperframe.fig 6KB
fixed_jakesmodel_trunc_10kmhr_1symperframe.fig 6KB
BER_EbNo_LS_BPSK_50kmhr_6tapRayleigh.fig 6KB
BER_EbNo_LS_BPSK_0HzDoppler_6tapRayleigh.fig 6KB
BPSK_10kmhr_6tap_exp.fig 6KB
BPSK_150kmhr_6tapexp_5symperframe.fig 6KB
BPSK_50kmhr_6tap_exp.fig 6KB
rand_jakesmodel_10kmhr_1symperframe.fig 6KB
16qam_awgn_normalized.fig 6KB
8psk_awgn.fig 6KB
qpsk_awgn.fig 6KB
BPSK_0HzDoppler.fig 6KB
main.m 18KB
channel_estimator.m 7KB
adpt_mod_para.m 6KB
set_B3G_para.m 6KB
set_11a_para.m 5KB
frame_timing.m 4KB
stbc_decode_TX4RX4.m 4KB
time_channel_para.m 3KB
demodu_sym.m 3KB
demod_sym.m 3KB
modulator.m 3KB
st_decoding.m 3KB
channel.m 2KB
estimator.m 2KB
sym_timing.m 2KB
modulation_sym.m 2KB
modu_sym.m 2KB
add_training.m 2KB
time_channel_para2.m 2KB
channel_coding.m 2KB
st_coding.m 1KB
demodulator.m 1KB
fine_freq_syn.m 1KB
to_freq_channel.m 1KB
performance_eval.m 1KB
shift.m 1KB
freq_syn_timedomain.m 1KB
mseq.m 1KB
coarse_freq_syn.m 1KB
ofdm_mod.m 1KB
user_bit_gen.m 1KB
adaptive_power.m 1KB
channel_decoding.m 1KB
adaptive.m 1KB
stbc_decode_TX2RX2.m 1KB
tmp_test.m 1008B
ofdm_demod.m 1006B
stbc_code_TX.m 926B
Tap_Rayleigh_Jakes2.m 868B
stbc_decode_TX2RX4.m 861B
adaptive_power1.m 850B
Tap_Rayleigh_Jakes.m 828B
pilot_insert.m 308B
saved_data.mat 1.71MB
5.png 9KB
2.png 8KB
1.png 8KB
共 101 条
- 1
- 2
资源评论
天天Matlab科研工作室
- 粉丝: 2w+
- 资源: 7252
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功