function [channel_estimate] = LTE_channel_estimator(LTE_params,ChanMod, UE, rx_ref_symbols, RefSym, RefMapping, perfect_channel, sigma_n2, y_tx_assembled_genie, y_rx_assembled)
% LTE channel estimator - to filter the output of the transmitter.
% [chan_output] = LTE_channel_model(BS_output, SNR)
% Author: Michal Simko, msimko@nt.tuwien.ac.at
% (c) by INTHFT
% www.nt.tuwien.ac.at
%
% input : ChanMod ... struct -> include info about filtering type, channel autocorrelation matrix
% channel_estimation_method ... string -> type of channel estimation
% channel_interpolation_method... string -> type of channel interpolation
% rx_ref_symbols ... [ x ] matrix of recieved reference symbols
% RefSym ... [ x ] matrix of transmitted reference symbols
% RefMapping ... [ x ] logical matrix of positions of reference symbols
% perfect_channel ... [ x ] coefficients of perfect channel
% sigma_n2 ... [1x1] double noise estimate
% output: channel_estimate ... [ x ] matrix of estimate of channel coefficients
%
% date of creation: 2009/04/06
% last changes: 2008/12/12 Simko
% global LTE_params;
%% Channel estimator
channel_estimate = nan(size(perfect_channel));
interpolation = false;
channel_estimation_method = UE.channel_estimation_method;
channel_interpolation_method = UE.channel_interpolation_method;
switch ChanMod.filtering
case 'BlockFading'
switch channel_estimation_method
case 'corrMMSE'
[position_freq,position_time] = find(RefMapping(:,:,1));
pilots_num = length(position_freq);
H_ls_matrix = nan(pilots_num/2,ChanMod.nRX,ChanMod.nTX);
for tt = 1:ChanMod.nTX
for rr = 1:ChanMod.nRX
H_ls_one_channel = rx_ref_symbols(:,:,tt,rr)./RefSym(:,:,tt);
[position_freq,position_time] = find(RefMapping(:,:,tt)); %positons of reference symbols
if(tt>2)
%position = reshape(position_freq,length(position_freq)/2,2); %form the position of reference symbols to appropriate matrix
[notused reference_mapping] = sort(position_freq); %find the real order of reference symbols in frequency
H_ls_one_channel = reshape(H_ls_one_channel,length(position_freq),2);
H_ls_one_channel(:,2) = [];
else
position = reshape(position_freq,length(position_freq)/2,2); %form the position of reference symbols to appropriate matrix
[notused reference_mapping] = sort(position(:,1)); %find the real order of reference symbols in frequency
H_ls_one_channel = reshape(H_ls_one_channel,length(position_freq)/2,2);
end
H_ls_one_channel = mean(H_ls_one_channel,2);
H_ls_matrix(:,rr,tt) = H_ls_one_channel(reference_mapping);
end
end
H_ls_vector = H_ls_matrix(:);
channel_autocorrelation = UE.channel_autocorrelation_matrix;
antenna_correlation = kron(squeeze(ChanMod.corrRX(1,:,:)) , squeeze(ChanMod.corrTX(1,:,:)));
channel_autocorrelation_full = kron(antenna_correlation,channel_autocorrelation);
permutation_matrix = zeros(LTE_params.Ntot*ChanMod.nTX*ChanMod.nRX);
permutation_vector = 1:LTE_params.Ntot*ChanMod.nTX*ChanMod.nRX;
pilot_pos = repmat(notused,ChanMod.nRX*ChanMod.nTX,1) + kron((0:(ChanMod.nRX*ChanMod.nTX-1))',ones(LTE_params.Ntot/3,1)*LTE_params.Ntot);
pilots_num = length(pilot_pos);
permutation_vector(pilot_pos) = [];
permutation_vector = [pilot_pos;permutation_vector'];
for pos_i = 1:LTE_params.Ntot*ChanMod.nRX*ChanMod.nTX
permutation_matrix(pos_i,permutation_vector(pos_i)) = 1;
end
channel_autocorrelation_full_permutated = permutation_matrix * channel_autocorrelation_full * permutation_matrix';
channel_estimate_permutated = channel_autocorrelation_full_permutated(:,1:pilots_num)*inv( channel_autocorrelation_full_permutated(1:pilots_num,1:pilots_num) + sigma_n2*eye(pilots_num)) * H_ls_vector;
channel_estimate_help = permutation_matrix'*channel_estimate_permutated;
channel_estimate_help2 = reshape(channel_estimate_help,LTE_params.Ntot,ChanMod.nRX,ChanMod.nTX);
channel_estimate(:,1,:,:) = channel_estimate_help2;
channel_estimate = repmat(channel_estimate(:,1,:,:),[1,LTE_params.Nsub,1,1]);
end
end
for tt = 1:ChanMod.nTX
for rr = 1:ChanMod.nRX
switch ChanMod.filtering
case 'BlockFading'
switch channel_estimation_method
case 'PERFECT'
channel_estimate = perfect_channel; % perfect channel knowledge
case {'LS', 'GENIE'} %LS for block fading
H_ls_one_channel = rx_ref_symbols(:,:,tt,rr)./RefSym(:,:,tt);
[position_freq,position_time] = find(RefMapping(:,:,tt)); %positons of reference symbols
if(tt>2)
%position = reshape(position_freq,length(position_freq)/2,2); %form the position of reference symbols to appropriate matrix
[notused reference_mapping] = sort(position_freq); %find the real order of reference symbols in frequency
H_ls_one_channel = reshape(H_ls_one_channel,length(position_freq),2);
H_ls_one_channel(:,2) = [];
else
position = reshape(position_freq,length(position_freq)/2,2); %form the position of reference symbols to appropriate matrix
[notused reference_mapping] = sort(position(:,1)); %find the real order of reference symbols in frequency
H_ls_one_channel = reshape(H_ls_one_channel,length(position_freq)/2,2);
end
H_ls_one_channel = mean(H_ls_one_channel,2);
H_ls_one_channel = H_ls_one_channel(reference_mapping);
interpolation = true;
case 'MMSE'
%first LS estimate on teh pilots positions
H_ls_one_channel = rx_ref_symbols(:,:,tt,rr)./RefSym(:,:,tt);
[position_freq,position_time] = find(RefMapping(:,:,tt)); %positons of reference symbols
if(tt>2)
%position = reshape(position_freq,length(position_freq)/2,2); %form the position of reference symbols to appropriate matrix
pilots_num = length(position_freq);
[notused reference_mapping] = sort(position_freq); %find the real order of reference symbols in frequency
H_ls_one_channel = reshape(H_ls_one_channel,pilots_num,2);
H_ls_one_channel(:,2) = [];
else
position = reshape(position_freq,length(position_freq)/2,2); %form the position of reference symbols to appropriate matrix
pilots_num = length(position_freq)/2;
[notused reference_mapping] = sort(position(:,1)); %find the real order of reference symbols in frequency
H_ls_one_channel = reshape(H_ls_one_channel,pilots_num,2);
end
H_ls_one_channel = mean(H_ls_one_channel,2);
H_ls_one_ch
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的lte物理层仿真信道建模,平台搭建 函数功能具有详细描述+使用说明文档.zip
共83个文件
m:33个
mexw32:13个
mexa64:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 130 浏览量
2024-05-23
09:42:26
上传
评论 1
收藏 209KB ZIP 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的lte物理层仿真信道建模,平台搭建 函数功能具有详细描述+使用说明文档.zip 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的lte物理层仿真信道建模,平台搭建 函数功能具有详细描述+使用说明文档.zip (83个子文件)
LTE_Link_Level_1.2_r553
LTE_load_parameters_SUSISO_quick_test.m 11KB
LTE_common_gen_Reference_Signal.m 4KB
LTE_common_crc16.mexa64 9KB
LTE_rx_siso_decode.mexw32 14KB
LTE_processTTI_results.m 6KB
LTE_common_turbo_rate_matching_bit_selection_and_pruning.mexa64 9KB
LTE_common_crc24b.mexmaci64 8KB
LTE_check_parameters.m 2KB
LTE_common_gen_gold_sequence.mexw64 11KB
LTE_rx_hard_decision.mexw32 6KB
LTE_common_soft_bit_interleaver.mexw64 9KB
LTE_rx_code_block_concatenation.m 923B
LTE_common_bit_interleaver.mexa64 8KB
LTE_common_generate_output_filename.m 1KB
LTE_map2antenna.m 262B
LTE_common_turbo_rate_matcher_bit_selection_and_pruning_mapping.mexmaci64 8KB
LTE_common_bit_interleaver.mexmaci64 8KB
LTE_rx_soft_sd2.mexmaci64 13KB
LTE_common_byte2bit.mexmaci64 8KB
LTE_common_CQI_mapping.m 714B
LTE_precoding.m 3KB
LTE_common_byte2bit.mexw64 8KB
LTE_common_crc24b.mexw64 9KB
LTE_common_gen_Synchronization_Signal.m 4KB
LTE_common_crc24a.mexw32 7KB
LTE_common_bit_interleaver.mexw64 9KB
LTE_rx_hard_decision.mexmaci64 8KB
LTE_common_turbo_rate_matcher_bit_selection_and_pruning_mapping.mexa64 8KB
LTE_common_crc16.mexmaci64 8KB
LTE_common_crc16.mexw64 9KB
LTE_common_get_precoding_matrix.m 1KB
LTE_common_turbo_rate_matching_bit_selection_and_pruning.mexmaci64 8KB
LTE_common_crc16.mexw32 7KB
LTE_common_get_CQI_params.m 1KB
LTE_common_soft_bit_interleaver.mexmaci64 8KB
LTE_common_bit2byte.mexa64 8KB
LTE_common_byte2bit.mexa64 7KB
LTE_common_gen_gold_sequence.mexa64 8KB
LTE_rx_check_crc.m 1KB
Untitled1.prj 25KB
LTE_common_crc24b.mexa64 10KB
LTE_common_soft_bit_interleaver.mexw32 6KB
LTE_common_turbo_encoder_generate_interleaving_mapping.m 1KB
LTE_common_bit_interleaver.mexw32 6KB
LTE_rx_siso_decode.mexa64 18KB
LTE_TX.m 20KB
LTE_common_crc24a.mexmaci64 8KB
LTE_common_compute_BLER.m 1KB
LTE_rx_hard_decision.mexa64 7KB
LTE_rx_HARQ_combine.m 2KB
LTE_common_gen_gold_sequence.mexmaci64 8KB
LTE_common_bit2byte.mexw32 7KB
LTE_common_turbo_rate_matcher_circular_buffer.m 2KB
LTE_common_turbo_rate_matcher_bit_selection_and_pruning_mapping.mexw32 8KB
LTE_common_crc24b.mexw32 7KB
LTE_common_byte2bit.mexw32 6KB
LTE_channel_estimator.m 49KB
LTE_common_calculate_SC_SNR.m 1KB
LTE_common_gen_gold_sequence.mexw32 7KB
LTE_common_EESM.m 1KB
LTE_load_parameters_SUSISO_BLER_curves_batch.m 11KB
LTE_rx_soft_sd2.mexa64 12KB
LTE_rx_freq_sync.m 1KB
LTE_common_turbo_rate_matcher_bit_selection_and_pruning_mapping.mexw64 9KB
LTE_common_scrambling.m 2KB
LTE_RX.m 21KB
LTE_rx_soft_sd2.mexw32 10KB
LTE_rx_calculate_turbo_BER.m 1KB
LTE_common_bit2byte.mexmaci64 8KB
LTE_common_soft_bit_interleaver.mexa64 8KB
LTE_rx_DLSCH_decode.m 3KB
LTE_aux_mex_files.m 2KB
LTE_common_R1_071667_CQI_parameters.m 976B
LTE_common_subblock_interleaver.m 6KB
LTE_common_turbo_rate_matching_bit_selection_and_pruning.mexw32 7KB
LTE_common_crc24a.mexa64 10KB
LTE_common_bit2byte.mexw64 8KB
LTE_common_crc24a.mexw64 9KB
LTE_rx_siso_decode.mexw64 15KB
LTE_channel_matrix.m 15KB
LTE_rx_code_block_desegmentation.m 1KB
LTE_channel_model.m 10KB
使用说明文档.md 13KB
共 83 条
- 1
资源评论
IT狂飙
- 粉丝: 4823
- 资源: 2654
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于多智能体深度强化学习的边缘协同任务卸载方法设计源码
- 基于BS架构的Java、Vue、JavaScript、CSS、HTML整合的毕业设计源码
- 基于昇腾硬件加速的AI大模型性能优化设计源码
- 基于Plpgsql与Python FastAPI的mini-rbac-serve权限管理系统后端设计源码
- 基于SpringBoot的轻量级Java快速开发源码
- 基于Python开发的物流调度算法设计源码
- 基于Java语言开发的推箱子游戏设计源码
- 基于C++与Python的跨平台log4x设计源码,简易易用功能强大的日志工具包
- 基于Python开发的安全即时通讯系统设计源码
- 基于Python的atrmstar项目设计源码及Shell、HTML集成方案
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功