资源简介
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仿真程序
- matlab实现带权重的线性回归
- matlab交互式图像分割源程序
- 基于 HMM算法的语音识别的matlab程序
- 图像SNR、PSNR与MSE计算
- 2004-c题(饮酒驾车的数学模型)+mat
- 非线性扩散--PM算法完整matlab代码
- MATLAB全规则元胞自动机
- Gabor变换 MATLAB程序 根据理论自己编写
- MatLab 批量将24位PNG彩图转换为8位PNG彩
- 用MATLAB实现的MM1仿真
- matlab 绘图教程
- 超全的模式识别Matlab源程序
- SPWM的三相MMC的matlab仿真
- 谐波检测 matlab程序
- 船舶航迹控制
- 船舶海上运动matlab仿真
- 遗传算法改进的模糊C-均值聚类MATLA
- MATLAB 汽车牌照识别程序
- HVDC MATLAB风电仿真模型
- 2PSK的调制与解调
- caffe_matlab
- 激光典型腔的matlab计算
- shepp-logan模型
- 基于Matlab的smith圆图程序
- matlab人工免疫算法求解TSP问题
- 利用POCS实现图像超分辨率重建的mat
- 图像能量代码用于图像处理中 mat
- MATLAB 带通切比雪夫滤波器代码
- 复杂背景下的动态目标识别,是基于
评论
共有 条评论