MIMO的OSIC检测算法。基于三种方式。matlab

  • a3_945004
    了解作者
  • matlab
    开发工具
  • 3.6KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-22 10:08
    上传日期
MIMO的OSIC检测算法,基于VBLAST,三种方式检测,matlab编写
12093178OSIC.rar
  • OSIC
  • OSIC_detector.m
    2.8KB
  • QAM16_demapper.m
    638B
  • OSIC_main.m
    2.5KB
  • QAM16_slicer.m
    592B
  • QAM16_mod.m
    640B
内容介绍
function [X_hat]=OSIC_detector(y,H,sigma2,nT,OSIC_type) % Input parameters % y : Received signal,nRx1 % 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 signal,nTx1 %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(i,i))^2/tmp; % SINR calculation end [val_max,index_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(nT,1); G = inv(H); % inverse of H for i=1:nT % column_norm calculation norm_array(i) = norm(H(:,i)); end [sorted_norm_array,Order_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_temp,1); % 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_min,index_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
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • Matlab教程
      MatlaB经典ppt,主要讲解了MatlaB的入门知识,图形编程以及仿真。
    • matlab 课件
      matlab 功能很强大,本课件详细的介绍了matlab在科学计算中的应用。
    • matlab编译器
      matlab编译为exe文件所需要的文件; 使用时解压,将解压后文件拖入至matlab命令行即可
    • matlab
      matlab的基础知识进行介绍
    • MatLab
      “#MatLab
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlab入门
      matlab的入门教程,很值得仔细看看,对提高matlab能力有帮助
    • matlab
      matlab经典课堂讲义
    • matlab
      matlab