📄 addulburst.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 + -