资源简介
MIMO的OSIC检测算法,基于VBLAST,三种方式检测,matlab编写

代码片段和文件信息
function [X_hat]=OSIC_detector(yHsigma2nTOSIC_type)
% Input parameters
% y : Received signalnRx1
% H : Channel matrix nRxnT
% sigma2: Noise variance
% nT : Number of Tx antennas
% OSIC_type
% - 1 : Post_detection_SINR
% - 2 : Column_max
% - 3 : Post_detection_SNR
% Output parameter
% X_hat : Estimated signalnTx1
%MIMO-OFDM Wireless Communications with MATLAB㈢ Yong Soo Cho Jaekwon Kim Won Young Yang and Chung G. Kang
%2010 John Wiley & Sons (Asia) Pte Ltd
if OSIC_type==1 % Post_detection_SINR
Order=[]; % detection order
index_array=[1:nT]; % yet to be detected signal index
% V-BLAST
for stage = 1:nT
Wmmse=inv(H‘*H+sigma2*eye(nT+1-stage))*H‘; % MMSE filter
WmmseH=Wmmse*H;
SINR=[];
for i =1:nT-(stage-1)
tmp= norm(WmmseH(i[1:i-1 i+1:nT-(stage-1)]))^2 ...
+ sigma2*norm(Wmmse(i:))^2;
SINR(i)=abs(WmmseH(ii))^2/tmp; % SINR calculation
end
[val_maxindex_temp] = max(SINR); % ordering using SINR
Order = [Order index_array(index_temp)];
index_array = index_array([1:index_temp-1 index_temp+1:end]);
x_temp(stage) = Wmmse(index_temp:)*y; % MMSE filtering
X_hat(stage) = QAM16_slicer(x_temp(stage)1); % slicing
y_tilde = y - H(:index_temp)*X_hat(stage); % interference subtraction
H_tilde = H(:[1:index_temp-1 index_temp+1:nT-(stage-1)]); % new H
H = H_tilde; y = y_tilde;
end
X_hat(Order) = X_hat;
elseif OSIC_type==2 % column_norm ordering detection
%X_hat=zeros(nT1);
G = inv(H); % inverse of H
for i=1:nT % column_norm calculation
norm_array(i) = norm(H(:i));
end
[sorted_norm_arrayOrder_temp] = sort(norm_array);
Order = wrev(Order_temp);
% V-BLAST
for stage=1:nT
x_temp=G(Order(stage):)*y; % Tx signal estimation
X_hat(Order(stage))=QAM16_slicer(x_temp1); % slicing
y_tilde = y-H(:Order(stage))*X_hat(Order(stage));
end
else % OSIC with Post_detection_SNR ordering
Order=[];
index_array=[1:nT]; % set of indices of signals to be detected
% V-BLAST
for stage=1:nT
G = inv(H‘*H)*H‘;
norm_array=[];
for i=1:nT-(stage-1) % detection ordering
norm_array(i) = norm(G(i:));
end
[val_minindex_min]=min(norm_array); % ordering in SNR
Order=[Order index_array(index_min)];
index_array = index_array([1:index_min-1 index_min+1:end]);
x_temp(stage) = G(index_min:)*y; % Tx signal estimation
X_hat(stage) = QAM16_slicer(x_temp(stage)1); % slicing
y_tilde = y-H(:index_min)*X_hat(stage); % interference subtraction
H_tilde = H(:[1:index_min-1 index_min+1:nT-(stage-1)]); % new H
H = H_tilde; y = y_tilde;
end
X_hat(Order) = X_hat;
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2854 2010-08-18 15:24 OSIC\OSIC_detector.m
文件 2580 2012-04-20 14:14 OSIC\OSIC_main.m
文件 638 2012-04-28 13:55 OSIC\QAM16_demapper.m
文件 640 2012-04-20 13:18 OSIC\QAM16_mod.m
文件 592 2010-08-18 15:10 OSIC\QAM16_slicer.m
目录 0 2012-05-01 13:53 OSIC
----------- --------- ---------- ----- ----
7304 6
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论