initialize.m
资源名称:MIMO-OFDM.rar [点击查看]
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:6k
源码类别:
传真(Fax)编程
开发平台:
Matlab
- function initialize()
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % 2 参数定义单元
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % 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;
- % 仿真循环开始的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]; % 导频子载波编号
- % 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);
- % 得到数据子载波的编号
- 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;
- % OFDM符号持续时间
- 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); % 6径信道每条径的功率
- 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}.Power = [ 0.3240 0.4015 0.0929 0.0961 0.0291 0.0340 0.0060 0.0165];
- % ch{u}.Delay = [ 50 100 150 200 250 300 350 400 ]';
- ch{u}.Power = ch{u}.Power/ sum(ch{u}.Power); % 功率归一化
- % 每个用户每条径的时延:ns
- % 每个用户每条径对应的样点数
- 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 = 4 ;
- % 使用LS或MMSE的DFT改进算法时,所保留的子载波数
- CE_SubcRemain = max(ch{u}.Delay_sample); % 最大多径时延对应的样点数
- % 多天线信道估计方法
- CE_Method2 = 2;
- % 2) 自适应调制: ,当TurnOn.AdptMod == 1时,
- % 1--自适应调制方法1, 给功率增加最小的子载波分配比特和功率, 子载波分配由AllocMethod确定
- % 2--自适应调制方法2, 按照信道响应降序排列,子载波间争夺比特和功率, 子载波分配由AllocMethod确定
- % 当TurnOn.AdptMod == 0 时,此不起作用, 无自适应调制,使用固定子载波分配
- AdptMethod = 1;
- % 子载波分配方法, 1--相邻分配, 2--交织分配, 3---跳频分配 ,4--自适应子载波分配
- AllocMethod = 1;
- % 自适应调制算法中需要的目标误比特率
- TargetBer = 1e-3;
- % 3) 空时编码: , 1--空时分组码
- ST_Code = 1;
- % 4)定时同步:
- PreNoiseLen = 500; % 为定时算法加的前噪样点数
- PostNoiseLen = 500; % 后噪样点数
- delta_fc = 10e3; % 载波频偏 (Hz)
- % 帧(粗)定时
- % 帧定时算法, 1--单窗口能量检测方法, 2--双窗口能量检测方法 , 3--延时相关方法帧定时
- FrameTiming = 2;
- Window1 = 128; % 帧定时算法的窗口宽度
- Threshold1 = 0.4; % 帧定时算法门限
- Delay1 = 128; % 帧定时延时相关算法的延时样点数
- % 载波频偏粗估计
- WinStart = 128*2;
- WinSize = 128;
- Delay2 = 128*9;
- % 符号定时算法
- Window2 = 256; % 和已知序列求相关,序列的长度
- TimingAhead = 0; % 定时提前的样点数
- % 载波频偏细估计
- WinStart2 = 256;
- WinSize2 = 1024;
- Delay3 = 1280;