⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addulburst.m

📁 OFDMA 物理层开发的matlab 源码.飞思卡尔提供.对物理层开发的工程师有帮助!
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Property of Freescale
%  Freescale Confidential Proprietary
%  Freescale Copyright (C) 2005 All rights reserved
%  ------------------------------------------------------------------------
%  $RCSfile: AddULburst.m.rca $
%  $Date: Sun Oct 22 02:43:09 2006 $
%  Target: Matlab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Adds a uplink burst to the UL zone figure. (OFDMA, WiMAX)
%
%     [H] = AddULburst(MapStruct,BurstD,BurstNo,<BT>)
%
% The input MapStruct includes the following elements:
% MapStruct.H    : figure handle
% MapStruct.Off  : MAP anchor/origin [x,y]
% MapStruct.Unit : width of one unit [x,y]
% ZoneD  : zone descriptor
% BurstD : burst descriptor
% BurstNo: 1,2,3,... 
% BT     : burst text, e.g. 'User x' (optional)
%
% H = textbox handle
%
% See also: CreateZoneMap
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [H] = AddULburst(MapStruct,ZoneD,BurstD,BurstNo,BT)
if ~exist('BT','var')
    BT = sprintf('Burst #%d',BurstNo);
end

%              r    g    b              
ColorCode = [ 1.0, 1.0, 0.0; ... %yellow
              0.0, 0.0, 1.0; ... %blue
              1.0, 0.0, 0.0; ... %red
              0.0, 1.0, 0.0; ... %green
              0.0, 1.0, 1.0; ... %cyan
              1.0, 0.0, 1.0; ... %magenta
              0.5, 0.5, 0.5; ... %grey
              0.6, 0.4, 0.2; ... %brown
              1.0, 1.0, 1.0; ... %white
              1.0, 1.0, 0.7; ... %yellow (light)
              0.7, 0.7, 1.0; ... %blue (light)
              1.0, 0.7, 0.7; ... %red (light)
              0.8, 1.0, 0.8; ... %green (light)
              0.8, 0.7, 0.4; ... %beige
              0.6, 0.0, 0.6; ... %violett
              0.8, 0.8, 0.8  ... %grey (light)
             ];
      
%place burst into zone
if BurstD.IUC~=254
   %uplink data burst
   NumSubchVecs=ceil((BurstD.SymOff+BurstD.Duration*ZoneD.Type)/ZoneD.NumSym);
   if NumSubchVecs==1
      %first SubchVec
      OffSubch = MapStruct.Off(2) - BurstD.SubchOff*MapStruct.Unit(2);  %reverse
      NumSubch = -MapStruct.Unit(2); %reserve
      OffSym = MapStruct.Off(1) + BurstD.SymOff*MapStruct.Unit(1); 
      NumSym = BurstD.Duration*ZoneD.Type*MapStruct.Unit(1);
      RemainingSlots=0;
   elseif NumSubchVecs==2
      %first SubchVec
      OffSubch = MapStruct.Off(2) - BurstD.SubchOff*MapStruct.Unit(2);  %reverse
      NumSubch = -MapStruct.Unit(2); %reverse
      OffSym = MapStruct.Off(1) + BurstD.SymOff*MapStruct.Unit(1); 
      NumSym = (ZoneD.NumSym-BurstD.SymOff)*MapStruct.Unit(1);
      RemainingSlots=BurstD.Duration-(ZoneD.NumSym-BurstD.SymOff)/ZoneD.Type;
      %second SubchVec
      OffSubch = [OffSubch , OffSubch(1)-MapStruct.Unit(2)]; %reverse 
      NumSubch = [NumSubch , -MapStruct.Unit(2)]; %reverse
      OffSym = [OffSym , MapStruct.Off(1)];  
      NumSym = [NumSym , RemainingSlots*ZoneD.Type*MapStruct.Unit(1)]; 
      RemainingSlots=0;
   elseif NumSubchVecs>=3
     %first SubchVec
     OffSubch = MapStruct.Off(2) - BurstD.SubchOff*MapStruct.Unit(2);  %reverse
     NumSubch = -MapStruct.Unit(2); %reverse
     OffSym = MapStruct.Off(1) + BurstD.SymOff*MapStruct.Unit(1); 
     NumSym = (ZoneD.NumSym-BurstD.SymOff)*MapStruct.Unit(1);
     RemainingSlots=BurstD.Duration-(ZoneD.NumSym-BurstD.SymOff)/ZoneD.Type;
     %middle SubchVecs
     OffSubch = [OffSubch , OffSubch(1)-MapStruct.Unit(2)]; %reverse 
     NumSubch = [NumSubch , -(NumSubchVecs-2)*MapStruct.Unit(2)]; %reverse
     OffSym = [OffSym , MapStruct.Off(1)];  
     NumSym = [NumSym , ZoneD.NumSym*MapStruct.Unit(1)]; 
     RemainingSlots=RemainingSlots-ZoneD.NumSym/ZoneD.Type*(NumSubchVecs-2);
     %last SubchVec
     OffSubch = [OffSubch , OffSubch(2)-(NumSubchVecs-2)*MapStruct.Unit(2)]; %reverse 
     NumSubch = [NumSubch , -MapStruct.Unit(2)]; %reverse
     OffSym = [OffSym , MapStruct.Off(1)];
     NumSym = [NumSym , RemainingSlots*ZoneD.Type*MapStruct.Unit(1)]; 
     RemainingSlots=0;
     NumSubchVecs=3;
   end

   %place MAP burst into figure
   for k=1:NumSubchVecs,
     H = annotation(MapStruct.H,'textbox',...
     'Position',[OffSym(k) OffSubch(k) NumSym(k) NumSubch(k)],...
     'BackgroundColor',ColorCode(mod(BurstNo,16),:),...
     'FitHeightToText','off',...
     'HorizontalAlignment','center',...
     'FontSize',8,...
     'String',BT,...
     'VerticalAlignment','middle');
   end
else
  
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -