Precoding trong Hệ thống thông tin di động

Embed Size (px)

DESCRIPTION

Precoding trong Hệ thống thông tin di độngHy vọng đọc nó để hiểu them vài điều thú vị :)Precoding, BD, Block Diagonization,

Citation preview

  • Trang 51

    CHNG 4: HN CH DUNG LNG PHN HI DA VO BEM TRONGMULTI-USER MIMO

    4.1. Gii thiu chng:Bn cnh nhng hnh thc phn chia bit nh: thi gian, tn s v m trong

    truyn thng khng dy, gn y phn chia theo khng gian c xem nh l mtchiu hng mi nng cao hiu nng ca h thng, c bit l trong truynmultiuser (MU). Trong a truy cp phn chia theo khng gian (SDMA), vic s dngnhiu anten mng cho php trm gc (BS) truyn ti ng thi nhiu lung d liu nvi nhiu ngi dng (user) khc nhau bng cch khai thc chiu tn hiu mi ny.Trong s cc k thut truyn MU, DPC (dirty paper coding) c bit n nh mtchin lc m ha MU ti u, khi hiu sut t c l dung lng gii hn caknh truyn MU. Tuy nhin, hiu sut ti u i km vi s tr gi cho phc tp lnv tnh thc t khng cao khi c mt lng ln user hot ng. Nh l mt k thuttuyn tnh c phc tp thp hn dng thay th, BD (block-diagonalization)precoding l mt xut m ha MU ti u c th thc hin c.

    Trong cc ti liu vi hu ht cc k thut tin m ha (precoding) bit ugi thit cc ng MU downlink l ng nht v bt bin theo thi gian (user khngdi chuyn) trong sut mt n v d liu truyn kh ln block/burst (block-fading).Tuy nhin trong mng MU vi cc node mng c tc di chuyn nhanh (v d nhngi dng trn t, tu la hay tu cao tc trong h thng LTE(long-termevolution) ), kt qu l CIR (chanel impulse respone) lun lun thay i theo thi gianlm cho CIR tr thnh mt tp hp cc thng s rt ln. iu ny gy ra mt lng tiqu ln cho knh phn hi thng tin trng thi knh truyn (CSI feedback) trong qutrnh x l precoding v chn la (scheduling) user khi xem knh truyn lun thay i BS v lm ny sinh cc vn v knh CSI feedback b li thi. khc phc vn ny, trong knh MIMO downlink vi nhng user khng ng nht (mi u cui ding khc nhau c s anten thu khc nhau v cng sut nhiu khc nhau) , phngphp hn ch dung lng phn hi da vo BEM (basis expansion model) c xut. BEM c dng nh mt kiu mu tham s xp x bt kp s thay i theothi gian ca knh truyn v gim s lng thng s knh truyn. c bit hn gim lng thng tin phn hi, vector cc h s BEM hun luyn s c lng tbng thut ton LBG (Linde-Buzo-Gray) v lu vo codebook nh l mt tp hpcha mt lng ln cc h s BEM tham chiu, c bit trc c bn pht ln bnthu. V th, thay v phn hi mt lng ln cc thng s knh truyn ta ch cn gi vBS a ch ca cc h s BEM tng ng trong codebook qua knh feedback.

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaTypewriterMo hinh trien khai coban

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaLine

  • Trang 52

    4.2. Xy dng h thng:4.2.1. Tn hiu pht:

    Xt knh downlink MU-MIMO LTE khng ng nht vi BS c trang b Ntanten pht, vi cc u cui khc nhau c s lng anten thu khc nhau v t s tnhiu trn nhiu (SNR) khc nhau, iu ch ghp knh phn chia theo tn s trc giao(OFDM) vi N im FFT c dng trong knh truyn downlink a sng mang. Saukhi IFFT v chn tin t vng (CP), tn hiu pht bng tn c s ca symbol OFDMth m c pht ti anten th p c th c vit nh sau:

    xn,m(p) = exp ( ) (1)

    Vi n {-Ng,,0,,N-1}, Ng l chiu di CP,X k,m(p) l sng mang con th k c tin m ha.4.2.2. p ng knh:

    Vi mi cp anten pht th p ti BS v anten thu th ru ca user th u (c Ruanten thu), li knh th l l hl,n,m(ru,p) vi n, m ln lt l ch s thi gian v symbolOFDM. Trong knh downlink c xt, BEM c dung bt kp s thay i theothi gian ca knh truyn. Vi s tr gip ca BEM, li knh thay i theo thigian th l gia anten pht th p v anten th ru ca user th u ti khe thi gian th n vsymbol OFDM th m c biu din nh sau:

    , (2)

    Tc user c gi s l khng i trong M symbol OFDM(trong khungtruyn LTE).

    L : s ng Phading ca knh truyn.:l gi tr ca hm c s th q c dng trong BEM.

    : l nhng h s BEM.

    Q : l s hm c s c dng trong BEM.

    : c to ra u tin bi thut ton Jakes, sau c xp x bi

    DSP-BEM, dng nh mt s kt hp tuyn tnh ca Q hm c s.

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaTypewriter?

    Xin PhaTypewriterDung GCE tot hon(xem do thi THUY)

  • Trang 53

    4.2.3. Tn hiu thu:Sau khi loi b CP, mu thu th n trong symbol OFDM th m ti anten thu th

    ru ca user th u c biu din:

    n=0,.,N-1; (3)

    Vi zn,m l nhiu Gausian cng thm vo vi phng sai u2 ta user th u. Gis nhng u cui khc nhau c c nhng cng sut nhiu khc nhau trong hthng ang xt.

    Sau khi bin i FFT ti user, tng ng vi sng mang con th k trong symbolOFDM th m ti anten th ru ca user th u tn hiu thu c xc nh:

    , (4)

    l nhiu lin sng mang (ICI)

    l

    tn s knh truyn (CFR)

    l nhiu ti bn thu min tn s

    Trong mng MU ang xt,vi s lng user bt k, precoding v schedulingc thc hin trn mi sng mang con trong mi symbol OFDM ca mt khungLTE. Biu din cng thc (4) mt cch n gin di dng ma trn :

    Yu = Hu X + Zu ; (5)

    Vi

    Gi s rng BS c cng sut pht trung bnh b hn ch tr( ) P

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaLine

  • Trang 54

    Vi = E[XXH].

    Trong (5) nhiu lin sng mang(ICI) b b qua v n l thnh phn c cng sutnh.Trong h LTE c thit lp,cng sut PICI b gii hn bi:

    PICI 2 (6)Vi fd l tn s Doppler ca knh,v l tc u cui,vn tc nh sng c=3.108

    m/s,fc l tn s sng mang, Ts l chu k ly mu ca h thng v s2 = E(| |2).

    V d: H thng LTE vi fc =2 GHz,fs=1/Ts=1,92 MHz,v=400 km/h,kt quPICI 4.910-7 s2. Xem nh mt thnh phn nhiu thp c th b qua.

    4.3. H thng truyn MU-MIMO hn ch dung lng feedback da vo BEM:4.3.1. Hn ch dung lng feedback da vo BEM:

    Trong thit k hn ch feedback gi s vic c lng cc h s BEM cthit lp ti cc user , ta chia n ra lm Q/V phn tngng vi LBG codebook G ( gim phc tp ca codebook ngun) nh sau:

    (7)

    Vi ,

    x = {1,,Q/V} v V l chiu di ca mi vector con.Trong LBG codebook ngun, ng vi mi ng fading l, thut tan

    LBG(dng 105 vector hun luyn BEM) c dng to ra trc codebook sau:

    (8)

    Vi , l=0,L-1 v B l s bit nh phn biu dinv tr cho mt codevector trong LBG codebook.

    (9)

    Tng ng vi mi tc di chuyn thu bao th ta s to ra mt codebooktheo thut ton LBG t nhng vector h s BEM hun luyn tng ng vi tc .

    Xin PhaLine

    Xin PhaHighlight

    Xin PhaTypewriterAi noi ?

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaLine

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaTypewriter?

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaLine

    Xin PhaTypewriter??????

    Xin PhaHighlight

    Xin PhaTypewriterj

    Xin PhaTypewriter

    Xin PhaHighlight

  • Trang 55

    Vi mi u cui di ng khc nhau vi nhng tc bit trc, LBGcodebook G s c trin khai vi tc gn nht vi nhng tc bit trc .

    Nhng thc t tc cc user rt kh xc nh mt cch chnh xc. Ngoi radung lng trong my thu ca cc thit b u cui cng khng m bo c vic lutr mt lng ln cc LBG codebook G c to ra trc tng ng vi nhng tc khc nhau. V vy lun tn ti chnh lch gia tc thc s ca mobile v tc sdng to ra codebook ti cc u cui di ng.

    S dng mt LBG codebook G vi mt tc cho trc, qu trnh khi phccc vector h s BEM c thc hin nh sau:

    Tm ra xp x tt nht ca cc vector con h s BEM c lng c trongcodebook bn thu.

    (10)

    Sau a ch ca h s BEM trong codebook c gi v BS qua knhfeedback khng li. Da vo a ch bit, BS c th xc nh c vector contng ng ca h s BEM trong codebook vi cng tc nh sau:

    (11)

    vi (12)

    v (13)

    x = 1,,Q/V v l = 0,,L-1.

    T nhng phin bn lng t c, ma trn p ng tn s knh truynCFR ng vi user th u c th c xc nh ti BS nh sau:

    (14)

    v (15)

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaHighlight

    Xin PhaRectangle

    Xin PhaHighlight

  • Trang 56

    Cc hm c s bit c BS ln user.

    Nh ch ra cng thc (15), p ng knh ng vi mi sng mang con trongmi OFDM symbol trong khe thi gian LTE hin ti c th c xc nh t phin bn

    ca h s BEM . Nh cp trc , nhng h s BEM xem nh c c lng hon ho bng thut ton c lng knh da vo BEM bit dngtn hiu pilot trong khe thi gian LTE trc.

    Sau khi c c thng tin feedback ti BS, u c xem nh p ng knhhon ho (perfect CSI) v c s dng trong qu trnh x l BD precoding vscheduling, c trnh by mc tip theo.4.3.2. Block-Diagonalization Precoding:

    Vi phin bn lng t CSI u c, ta dng n tin m ha dng d liupht cho cc user nhm loi b nhiu lin user (IUI). v

    Vi tp user la chn U, tn hiu truyn ti BS lX = (16)

    S dng cng thc (5) v (16), tn hiu thu ca user th u trong tp user cla chn c biu din di dng vector nh sau:

    (17)

    loi b thnh phn nhiu gia cc user IUI, trong (17),th ma trn BD precoding Wu phi tha mn c iu kin zero-forcing sau:

    Hu Wu = 0 ; u # u , 1 u,uU. (18)Bng cch s dng BEM trong vic hn ch lng thng tin phn hi, BS ch

    c phin bn lng t CSI trong (14) v do ma trn BD-precoding Wu sc xc nh bi nhng {u}u=1U xem nh l nhng CSI hon ho vy .

    t c (18), ta c th biu din n di mt dng khc:

    vi u=1,,U. (19)

    t c zero-forcing trong (18), Wu phi l null space ca ma trn vimt iu kin cn Nt u (s anten pht phi ln hn hoc bng tng s anten

    Xin PhaRectangle

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaRectangle

  • Trang 57

    thu ca cc user c la chn). tm ra null space ca ma trn ta phn hy(SVD) n nh sau:

    (20)

    Vi u l bao gm nu = ct u tin ca thnh phn phn hy th3 ca ma trn v u l nhng ct cn li (Nt-nu), u

    Nh trnh by ,ta c:

    u = 0 (21)

    Vi uH u = I. Nh vy u l ngim tha mn phng trnh (18). Nhng ta schn ma trn BD-precoding ng vi user th u nh sau:

    Wu = PuRu (22)

    Vi l ma trn bt k tha mn iu kin hn ch tng cng sut vPu c to thnh t Ru ct ca ma trn u.

    Pu = u (:,Nt - nu Ru + 1 : Nt - nu), (23)Vi nu = u.

    Sau khi BD-precoding thnh phn nhiu cc user b loi b (inter-user-interference), tn hiu thu user th u l:

    Yu = Hu PuRusu + Zu. (24)

    By gi ta i xc nh Cu = RuRuH l mt ma trn positive semidifinite.Vi phin bn lng t CSI c sn ti BS, tc user th u c th c xcnh trong qu trnh tnh ton precoding/scheduling ti BS nh sau:

    (25)

    Vi ma trn =E[XXH] = uCuPuH(v E[susuH]=IRu). iu kin v cngsut tr( ) P . Suy ra (Cu) P (v tnh cht tr(ABC) = tr(BCA)).

    Ma trn Cu c th c xc nh sao cho maiximize tc h thng

    Xin PhaRectangle

    Xin PhaLine

    Xin PhaRectangle

    Xin PhaArrow

    Xin PhaTypewriterTai lieu nao

    Xin PhaTypewriterRu' la ????

    Xin PhaTypewriter

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaRectangle

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaTypewriter?

    Xin PhaLine

  • Trang 58

    Tng ng vi vic minimize - . Nh vy Cu l ngim ca h phng trnh sau:

    Minimize -

    Tha (Cu) P

    Cu 0, u = 1,,U. (26)

    Vi kiu h phng trnh trn ta c th gii quyt n mt cch hiu qu bngcch s dng iu hin ti u KKT (Karush-Kuhn-Tucker). n gin ha vic tnhton, ta t Du = u Pu xem nh l hiu ng knh ca user th u sau khi precoding. Tac 1/ u2 DuDuH = uEuuH vi Eu l ma trn ng cho cha cc gi tr (eu,1,, )v uuH = I. Suy ra u2Du-1Du-H = uEu-1uH. Nh trnh by trong [1], Cu c xcnh bng cng thc sau:

    (27)

    Vi (x)+ =max(x,0).Water-level c xc nh bi:

    (28)

    Nh vy vi tp user c la chn, qu trnh BD-precoding c gng clng i thnh phn nhiu gia cc user v maximize tc h thng. Nh cp trn, tnh kh thi ca vic hn ch feedback da vo BEM s c kim tra trongmng MU vi s lng user kch hot trng h thng ty . c bit vi vic s dngknh hn ch feedback ny, qu trnh precoding v scheduling u c x l ti BS.i hi mt qu trnh x l phc tp trong vic maximize tc h thng. Ta s xemxt mt cch chi tit k thut scheduling mc tip theo.4.3.3. Greedy Scheduling :

    Trong k thut precoding, mc ch ca vic scheduling l tm ra tp nhnguser trong tt c nhng user ang kch hot trong h thng nhm maximize tc hthng. C mt cch thc n gin trong vic chn la ra tp user l tm kim y

    Xin PhaOval

    Xin PhaTypewriter?

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaArrow

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaHighlight

    Xin PhaTypewriterkhi lsam do an, phai co cau dan dat ni moi dung yeu cau, con mo dau chuong nhu ba Thuy

    Xin PhaArrow

  • Trang 59

    (x l tt c user) nhng iu s to ra phc tp qu ln v tnh thc thi khngcao khi s lng user qu ln. trnh nhc im trn Greedy Scheduling c xemnh l mt gii php thay th. Sau khi BD precoding cho tng user trong tp user S,tng tc BD(S) c th c xc nh ti BS nh sau:

    (29)

    vi Pu v Cu ln lt c xc nh (23)v (27).Chi tit qu trnh thc hin Greedy Scheduling vi Ua user ang kch hot trong

    h thng c trnh by theo nhng bc sau:1) Khi u: A0 ={1,2,,Ua} l tp ch s ca cc user ang kch hot. S0={ }

    l tp user c la chn ban u rng. v=0 tng ng vi s lng user c la chn. R0 = 0 l tc cu h thng.

    2) Vng lp: Xc nh u* l ch s ca user c chn trong vng lp hin ti, u* c xc

    nh nh sauu* = arg max { BD (Sv {u*})}, u Av (30)

    max = BD (Sv {u*}) (31)

    v = v+1 Nu max Rv-1 nhy ti bc 3, khng th thc hin cc bc sau:- Rv = max- Sv = (Sv-1 {u*}) (thm mt user vo tp user c chn)- Av = Av-1\{u*} (loi b i mt user trong vng lp tm kim sau) Quay tr li bc 2.3) Dng qu trnh la chn user:Vi tp S user c chn,tc thc s ca h thng l:

    (32)

    4.4. M phng v kt qu:Tin hnh m phng h thng vi cc thng s sau:

    - S knh pha dinh tng ng mi cp anten pht vi anten thu L=5.- Tc ca user v=200km/h.

    Xin PhaTypewriter

    Xin PhaArrow

    Xin PhaTypewriterla gi, y nghia ?

    Xin PhaArrow

    Xin PhaTypewriterEo hieu

    Xin PhaArrow

    Xin PhaTypewriterSao khong thay doi toc do khac

    Xin PhaTypewriterL=6 ,7 thi sao ?

  • Trang 60

    - S lng hm c s c s dng Q=18.- S khe thi LTE: 20.- S symbol trong mt khe thi gian: 7.- 128-point FFT.- Tn s ly mu: 1.92Mhz.- Tn s sng mang: 2Ghz.- Chiu di tin t vng: CP=10.- Phng sai nhiu: u2 =1.

    4.4.1. Tc ca h thng khi thay i s lng user:S lng user thay i ln lt N_user=[4 10 20 30] vi s lng anten mi

    user thay i tng ng [ones(1,N_user/2) 2*ones(1,N_user/2], s anten pht Nt=8.

    Nhn xt: Tc user tng khi s lng user tng.4.4.2. Tc ca h thng khi s lng anten pht thay i:

    S lng user khng i N_user=4, s lng anten thu ca mi user vn theoqut lut c, s lng anten pht thay i ln lt Nt=[2 4 6 8].

    Xin PhaLine

    Xin PhaTypewriterben ba Thuy co nhieu Q khac

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaArrow

    Xin PhaTypewriterCo lien he gi khong ?

    Xin PhaArrow

    Xin PhaArrow

  • Trang 61

    Nhn xt: tc h thng tng khi s lng anten pht tng.4.4.3. BD-precoding:

    Vi h thng Mutil-user MIMO n gin: s anten pht NT=4, s lng antenca mi user NR=2, s lng user =2, p ng xung h c to ra ngu nhin bi hmrand v xem nh bit bn pht. So snh BER ca trng hp s dng BD-precoding v khng s dng BD-precoding, iu ch M-QAM vi M khc nhau 2,4.

    Nhn xt: s dng BD-precoding lm gim BER ng k. Trng hp M=2 cho BERtt hn M=4.

    Xin PhaTypewriternen gop nhieu do thi cho co the nhan xet

  • Trang 62

    4.5. Kt lun chng: chng ny ta i su tm hiu v cch hn ch dung lng feedback da

    vo h s BEM.Tm hiu v phng php BD-precoding, phn b cng sut v xydng cch chn la user theo dung lng.M phng tc ca h thng khi ta thayi user , thay i anten pht v so snh 2 trng hp khc nhau khi c v khng sdng BD-precoding.

  • Trang 63

    KT LUN V HNG PHT TRIN TI

  • Trang 64

    TI LIU THAM KHO

    [1] Nguyn L Hng,Mobile Communications[2] Yong Soo Cho,Jaek won Kim,Won Young Yang,Chung G.Kang.MIMO-OFDM Wireless Communication with Matlab[3] Nguyn L Hng,L Ngc Th,Loic Canonne-Velasquez Multiuser MIMODowlink Tranmission with BEM-Based Limited Feedback over Douby SelectiveChannels

  • Trang 65

    PH LC****BD.m****

    clear all;close all;N_trial = 50; % number of simulation trialsN_user = [4 10 20 30]; % number of available "homogeneous" users in the consideredLTE systemN_tx = 8; % number of transmit antennas at BS; N_rx: number of Rx antennas = 1 atthe current step.

    L = 5; % number of resolvable multipaths < N_cp, could be considered as themaximum number of resolvable paths of all BS-to-user channelsPDP = exp(-[0:L-1]/4)/sum( exp(-[0:L-1]/4) );% Power Delay Profile in according toCOST 259, [L. M. Correia,

    % "Wireless Flexible Personalised Communications",New York: Wiley 2001].v_offset = 20; % = 0 if users have perfect values of their speeds.v_kph =200;% speed of "homogeneous" users in km/hN_dps_base = 18; % number of DPS-BEM coefficents is used in the TV channelmodelingk_dimen = 2; % each BEM coefficient vector is divided into many segments with alength of k=2 before vector quantization.%======LTE downlink timing settings related to pre-defined DPS-bases/Codebook

  • Trang 66

    %The below MAT-file contains the pre-defined LBG codebook to be used in thissimulation platform.loadCodebook_10bits_1E5trains_DPS_18Bases_200kph_fc2GHz_2LTEframes_normal_CP_128FFT;

    achievable_rate = zeros(1,length(N_user)); % achievable rate of our proposed schemefor k=1:length(N_user)

    N_rx = 2*ones(1,N_user(k))No = 1*ones(1,N_user(k)); % Noise variance in "hetergeneous" scenarios

    for trial =1:N_trial % to obtain average values of capacity/ratedisp(['Current Trial = ', num2str(trial)]);

    actual_speed = v_kph + v_offset*(2*rand-1); % due to imperfect knowledge of userspeeds

    [BEM_coe_Rx,CIR_Rx,TI_CIR_Rx] =Zheng_DPS_CIR_Gen(N_user(k),N_rx,N_tx,L,PDP,actual_speed,N_dps_base,...

    N_LTE_frame,N_slot,N_sym_slot,N_fft,Ns,1/fs,fc,pseudoInv_BEM_Base_ma);disp(['Channel Generation Completed, Current Trial = ', num2str(trial)]); % to

    estimate the simulation time of each task

    % Quantization of users' BEM coefficients (channel responses) for feedback to BaseStation.

    [index_set_Rx] =VQ_index_search(BEM_coe_Rx,k_dimen,L,N_tx,N_rx,N_user(k),codevectors); %index_set_Rx(seg,tap,tx_anten,user) to be sent to Base Station

    clear BEM_coe_Rx;disp(['BEM Quantization Completed, Current Trial = ', num2str(trial)]); % to

    estimate the simulation time of each task

    [BEM_coe_BS] =BEM_coe_recover(index_set_Rx,codevectors,N_tx,N_rx,L,N_dps_base,k_dimen,N_user(k)); % recovered BEM coefficients at Base Station

    [CFR_BS,CFR_Rx] =CFR_Gen(N_user(k),N_tx,N_rx,L,Ns,N_fft,CIR_Rx,BEM_coe_BS,BEM_Base_ma,N_sym_slot,N_slot,N_LTE_frame);

    clear CIR_Rx BEM_coe_BS; % to reduce the used memory in PC % OR CAN USEBEM COEFFICIENTS TO RECOVER CFR_Rx TO AVOID THE USE OF CIR_Rx

    disp(['CSI Recovery at BS Completed, Current Trial = ', num2str(trial)]); % toestimate the simulation time of each task

  • Trang 67

    [TI_CFR_Rx] = TI_CFR_Gen(N_user(k),N_tx,N_rx,L,N_fft,TI_CIR_Rx); %assumed time-invariant CFR (perfect estimation) used for comparison

    clear TI_CIR_Rx;% The below Greedy scheduling under assumption of time-invariant channels

    ignore the ICI power

    [total_rate] =Greedy_scheduler(Power,No,CFR_Rx,CFR_BS,N_fft,N_tx,N_rx,N_user(k),N_sym_slot,N_slot);

    achievable_rate(k) = achievable_rate(k) + real( total_rate );disp(['TV-channel Scheduling completed, Current Trial = ',

    num2str(trial)]); % to estimate the simulation time of each taskclear CFR_BS;

    endachievable_rate(k) = achievable_rate(k)/N_trial/(N_sym_slot*N_slot)/N_fftend

    figure(1)plot(N_user,achievable_rate,'-.k*','LineWidth',2);hold on;xlabel('Number of active users');ylabel('Sum-rate (bps/Hz)');legend('BD using BEM-based limited feedback');

  • Trang 68

    ****DPS_BEM_Gen****

    function [BEM_Base_ma,pseudoInv_BEM_Base_ma] =DPS_BEM_Gen(v_kph,N_dps_base,fc,N_LTE_frame,N_slot,N_sym_slot,N_fft,N_cp,fs);

    Ns = N_cp + N_fft; % OFDM symbol length after CP insertionTs = 1/fs; %the resulting sampling periodsam_index = 0:Ns*N_sym_slot*N_slot*N_LTE_frame - 1; % set of the time-domainsamples in N_LTE_frame framessam_time = sam_index*Ts; % time instants in N_LTE_frame frameslen_sam_index = length(sam_index);% number of all time-domain samples inN_LTE_frame frames

    v_ms = v_kph*1000/3600; % speed in m/sc =3e8;%speed of light m/sv_Dmax = v_ms*fc*Ts/c; % Normalized one-sided Doppler bandwidth; actual mobilespeed can be a bit greater than the used value of v_ms herein.%-------------------------------------------------------------------------NW = v_Dmax*len_sam_index; % following description of dpss Matlab function,v_Dmax ---> W; len_sam_index --> N[E_ma,V_ma] = dpss(len_sam_index,NW,N_dps_base); % Put in a SEPERATE M-file to reduce simulation time !!!!

    BEM_Base_ma = E_ma(1:len_sam_index,1:N_dps_base);pseudoInv_BEM_Base_ma = inv(BEM_Base_ma'*BEM_Base_ma)*BEM_Base_ma';% for pre-computation of pseudo matrix inversion in TV channel generation

  • Trang 69

    ****Zheng_DPS_CIR_Gen****

    function [BEM_coe_Rx,CIR_Rx,TI_CIR_Rx] =Zheng_DPS_CIR_Gen(N_user,N_rx,N_tx,L,PDP,v_kph,N_dps_base,N_LTE_frame,N_slot,N_sym_slot,N_fft,Ns,Ts,fc,...

    pseudoInv_BEM_Base_ma);M = 20; % number of sinusoid waves in Zheng model (extended Jakes model)len_sam_index = Ns*N_sym_slot*N_slot*N_LTE_frame;% number of all time-domain samples in N_LTE_frame frames where mobile user speed

    % is assumed to be unchanged.sam_time = (0:len_sam_index - 1)*Ts; % time instants in N_LTE_frame frames (of asuperframe)v_ms = v_kph*1000/3600; % mobile user speed in m/sc =3e8; % speed of light in m/swd = 2*pi*v_ms*fc/c;BEM_coe_Rx = zeros(N_dps_base,L,N_tx,max(N_rx),N_user);CIR_Rx = zeros(L,N_fft,N_tx,max(N_rx),N_user,N_sym_slot*N_slot);TI_CIR_Rx = zeros(L,N_tx,max(N_rx),N_user);for user = 1:N_user

    for rx_anten = 1:N_rx(user)for tx_anten = 1:N_tx

    for tap = 1:Lalpha_n = ( 2*pi*[1:M].' - pi + pi*(2*rand-1) )/4/M; % M is the number of

    sinusoid waves in Zheng model (extended Jakes model)Shi_n = pi*(2*rand(M,1)-1)*ones(1,len_sam_index);%PHI_ma = pi*(2*rand(M,1)-1)*ones(1,len_sam_index); % or PHI_ma =

    pi*(2*rand-1)*ones(M,len_sam_index) !!! as used in Zheng paperPHI_ma = pi*(2*rand-1)*ones(M,len_sam_index); %

  • Trang 70

    TI_CIR_Rx(1:L,tx_anten,rx_anten,user) =CIR_Rx(1:L,1,tx_anten,rx_anten,user,1);

    %assuming time-invariant CIR is equal to the CIR at the 1st sample in the 1stOFDM symbol

    endend

    endclear Shi_n PHI_ma fading_gain sam_time;

  • Trang 71

    ****VQ_index_search****

    function [index_set] =VQ_index_search(BEM_coe,k,L,N_tx,N_rx,N_user,codevectors);len_codebook = length(codevectors(1,:,1));N_segment = length(BEM_coe(:,1,1,1,1))/k;index_set = zeros(N_segment,L,N_tx,max(N_rx),N_user);for user =1:N_user

    for rx_anten = 1:N_rx(user)for tx_anten = 1:N_tx

    for tap =1:L % number of resolvable multipathsfor seg = 1:N_segment % the segment index of parts in a BEM coefficient

    vector;[min_va,index_set(seg,tap,tx_anten,rx_anten,user)]=...

    min( sum( abs( BEM_coe([1:k]+k*(seg-1),tap,tx_anten,rx_anten,user)*ones(1,len_codebook) -...

    codevectors([1:k]+k*(seg-1),1:len_codebook,tap) ).^2 ) );

    endend

    endend

    end% Just for reference on matrix sizes. % %BEM_coe(1:N_dps_bases,tap,tx_anten,user); % codevectors(1+k*(seg-1):k*seg,1:2^FB_len,tap)

  • Trang 72

    ****BEM_coe_recover****

    function [BEM_coe_BS] =BEM_coe_recover(index_set,codevectors,N_tx,N_rx,L,N_dps_base,k_dimen,N_user);%Just for reference on matrix sizes used.% codevectors(1+k*(seg-1):k*seg,1:2^FB_len,tap)% index_set(seg,tap,tx_anten,user)BEM_coe_BS = zeros(N_dps_base,L,N_tx,max(N_rx),N_user);for user =1:N_user

    for rx_anten = 1:N_rx(user)for tx_anten =1:N_tx

    for tap =1:Lfor seg = 1:N_dps_base/k_dimen

    BEM_coe_BS([1:k_dimen]+k_dimen*(seg-1),tap,tx_anten,rx_anten,user)=...

    codevectors([1:k_dimen]+k_dimen*(seg-1),index_set(seg,tap,tx_anten,rx_anten,user),tap);

    endend

    endend

    end

  • Trang 73

    ****CFR_Gen****

    function [CFR_BS,CFR_Rx] =CFR_Gen(N_user,N_tx,N_rx,L,Ns,N_fft,CIR_Rx,BEM_coe_BS,BEM_Base_ma,N_sym_slot,N_slot,N_LTE_frame);% CIR_Rx(1:L,1:N_fft,1:N_tx,1:N_rx,1:N_user,OFDM_sym): just for reference inmatrix sizesmax_N_rx = max(N_rx);CFR_BS = zeros(max_N_rx,N_tx,N_fft,N_user,N_sym_slot*N_slot); % causeproblem of Memory in case of large user poolCFR_Rx = zeros(max_N_rx,N_tx,N_fft,N_user,N_sym_slot*N_slot); % causeproblem of Memory in case of large user poolfor OFDM_sym = 1:N_sym_slot*N_slot % CP length =Ns-N_fft

    sum_BEM_bases = sum( BEM_Base_ma(Ns*N_sym_slot*N_slot*(N_LTE_frame-1) + (OFDM_sym-1)*Ns + Ns-N_fft + [1:N_fft],:) );

    for user = 1:N_userfor rx_anten = 1:N_rx(user)

    for tx_anten = 1:N_txsum_CIR_Rx = sum(

    CIR_Rx(:,1:N_fft,tx_anten,rx_anten,user,OFDM_sym).' );for kk = 1:N_fft %

    BEM_coe(1:N_dps_bases,tap,tx_anten,user):)CFR_BS(rx_anten,tx_anten,kk,user,OFDM_sym) =...

    sum_BEM_bases*(BEM_coe_BS(:,:,tx_anten,rx_anten,user)*exp(-j*2*pi*(kk-1)*[0:L-1]'/N_fft) )/N_fft;

    % compute H(kk,kk); (kk-1) since subcarrierindex run from 0 to N_fft -1

    CFR_Rx(rx_anten,tx_anten,kk,user,OFDM_sym) = sum_CIR_Rx*exp(-j*2*pi*(kk-1)*[0:L-1].'/N_fft )/N_fft;

    endend % end of "for tx_anten = 1:N_tx"

    endend

    end

  • Trang 74

    ****TI_CFR_Gen****

    function [TI_CFR_Rx] = TI_CFR_Gen(N_user,N_tx,N_rx,L,N_fft,TI_CIR_Rx);

    % TI_CIR_Rx(1:L,tx_antenn,user)TI_CFR_Rx = zeros(max(N_rx),N_tx,N_fft,N_user);for user = 1:N_user

    for rx_anten = 1:N_rx(user)for tx_anten = 1:N_tx

    for kk = 1:N_fftTI_CFR_Rx(rx_anten,tx_anten,kk,user) = exp( -j*2*pi*(kk-1)*[0:L-

    1]/N_fft )* TI_CIR_Rx(1:L,tx_anten,rx_anten,user);end

    endend

    end

  • Trang 75

    ****Greedy_scheduler****

    function [total_rate_frame] =Greedy_scheduler(Power,No,CFR_Rx,CFR_BS,N_fft,N_tx,N_rx,N_user,N_sym_slot,N_slot);% Just for reference on matrix sizes: TI_CFR_Rx(1:N_fft,tx_anten,user)total_rate_frame = 0;for OFDM_sym = 1:N_sym_slot*N_slot

    for kk = 1:N_fft % perform (per-subcarrier) scheduling for each subcarrieruser_set = [1:N_user]; % set of available users in the considered LTE systemloop = 1; % just a variable refering to the number of selected users. As a result,

    noted that the number of selected users = loop-1 N_tx % not sastify the constraint ofnumbers of Tx/Rx antennas

    if loop ==1temp_sum_rate(uu) = log2( det( eye(N_rx(user_set(uu)))+

    (Power/N_tx)*...

    CFR_BS_temp_users*CFR_BS_temp_users'/No(temp_user_set) ) );else

    temp_sum_rate(uu) = 0;end

    else% if some temporarily selected users are too close in space the rank of the

    matrix H will be < sum(N_rx(temp_user_set))if loop == 1 % corresponding to the 1st round of Greedy user selection

    %no SVD required since there is only one user in the currentlyconsidered scenario

    temp_sum_rate(uu) = log2( det( eye(N_rx(user_set(uu))) +(Power/N_tx)*...

  • Trang 76

    CFR_BS_temp_users*CFR_BS_temp_users'/No(temp_user_set) ) );else % with Greedy user scheduling, selecting too-close users will reduce

    the sum-rate of the system.U_v = zeros(max(N_rx),max(N_rx),length(temp_user_set));G_ma = zeros(max(N_rx),max(N_rx),length(temp_user_set));Lamda_vec = zeros(max(N_rx),length(temp_user_set));Lamda_seq = [];for user_index = 1:length(temp_user_set)

    H_temp = CFR_BS_temp_users;H_temp( sign(user_index-1)*sum( N_rx(

    temp_user_set(1:max(user_index-1,1)) ) ) +...

    [1:N_rx(temp_user_set(user_index))],:) = [];[U_ma,S_ma,V_ma] = svd(H_temp);V_precoding = V_ma(1:N_tx,N_tx-

    N_rx(temp_user_set(user_index))+1 : N_tx); % if rank(H_temp) =length(H_temp(:,1));

    G_ma(1:N_rx(temp_user_set(user_index)),1:N_rx(temp_user_set(user_index)),user_index) =...

    CFR_BS(1:N_rx(temp_user_set(user_index)),1:N_tx,kk,temp_user_set(user_index),OFDM_sym)*V_precoding;

    %Consider different No at each user

  • Trang 77

    % Should be carefull at Es_total for case of more than 1 user; Use thesamme Es_total, this is verify by hand-writing at page (*)

    used_length = length(lamda_seq_sorted); % number of currentlyconsidered users for scheduling

    check = 1;while (check)

    water_level = lamda_seq_sorted(used_length); % water level = 1/mu;if sum( max(water_level - lamda_seq_sorted, 0) ) > Power

    used_length = used_length - 1;else

    check = 0;end

    end%Calculate optimal water levelwater_level = ( Power +sum( lamda_seq_sorted(1:used_length) )

    )/used_length;temp_sum_rate(uu) = 0;for user_index = 1:length(temp_user_set)

    S_k =U_v(1:N_rx(temp_user_set(user_index)),1:N_rx(temp_user_set(user_index)),user_in-dex)*...

    diag( max(water_level -1./Lamda_vec(1:N_rx(temp_user_set(user_index)),user_index),0) )*...

    U_v(1:N_rx(temp_user_set(user_index)),1:N_rx(temp_user_set(user_index)),user_in-dex)';

    temp_sum_rate(uu) = temp_sum_rate(uu) + log2( det(eye(N_rx(temp_user_set(user_index))) +...

    G_ma(1:N_rx(temp_user_set(user_index)),1:N_rx(temp_user_set(user_index)),user_index)*...

    S_k*...

    G_ma(1:N_rx(temp_user_set(user_index)),1:N_rx(temp_user_set(user_index)),user_index)'/...

    No(temp_user_set(user_index)) ) );end

    end % of "if loop ==1"end % checking to see if adding one more user will sastify

    sum(N_rx(temp_user_set))

  • Trang 78

    keep_searching = 0; % Stop Greedy user selection due to a decrease in thesystem sum-rate.

    elseselected_user_set = [selected_user_set user_set(index_max)];% selected_users(loop) = user_set(index_max);CFR_BS_chosen_users =

    [CFR_BS_chosen_users;CFR_BS(1:N_rx(user_set(index_max)),1:N_tx,kk,user_set(index_max),OFDM_sym)];

    user_set(index_max) = 0; % just a way to ignore the currently selected userin later consideration/user selection.

    user_set = sort(user_set,'descend');% a way to ignore the currently selecteduser in later greedy user selection.

    loop = loop+1; % number of selected users (add ONE new selected user) =loop-1

    endend % end of the entire schdeduling process.% Compute the achievable system sum-rate with the above set of selected users% Repeat the BD precoding for the above set of selected usersif length(selected_user_set) == 1 % corresponding to the 1st round of Greedy user

    selection%no SVD required since there is only one user in the currently considered

    scenarioactual_sum_rate=log2( det( eye(N_rx(selected_user_set(1))) +

    (Power/N_tx)*...

    CFR_Rx(1:N_rx(selected_user_set(1)),1:N_tx,kk,selected_user_set(1),OFDM_sym)*...

    CFR_Rx(1:N_rx(selected_user_set(1)),1:N_tx,kk,selected_user_set(1),OFDM_sym)'/...

    No(selected_user_set(1)) ) );else % with Greedy user scheduling, selecting too-close users will reduce the

    sum-rate of the system.U_v = zeros(max(N_rx),max(N_rx),length(selected_user_set));G_ma = zeros(max(N_rx),max(N_rx),length(selected_user_set));Lamda_vec = zeros(max(N_rx),length(selected_user_set));Lamda_seq = [];V_precoding = zeros(N_tx,max(N_rx),length(selected_user_set));for user_index = 1:length(selected_user_set)

    H_temp = CFR_BS_chosen_users;H_temp( sign(user_index-1)*sum( N_rx(

    selected_user_set(1:max(user_index-1,1)) ) ) +...[1:N_rx(selected_user_set(user_index))],:)

    = [];[U_ma,S_ma,V_ma] = svd(H_temp);

  • Trang 79

    V_precoding(1:N_tx,1:N_rx(selected_user_set(user_index)),user_index) =...V_ma(1:N_tx,N_tx -

    N_rx(selected_user_set(user_index))+ 1 : N_tx); % if rank(H_temp) =length(H_temp(:,1));

    G_ma(1:N_rx(selected_user_set(user_index)),1:N_rx(selected_user_set(user_index)),user_index) =...

    CFR_BS(1:N_rx(selected_user_set(user_index)),1:N_tx,kk,selected_user_set(user_in-dex),OFDM_sym)*...

    V_precoding(1:N_tx,1:N_rx(selected_user_set(user_index)),user_index);%Consider different No at each user

  • Trang 80

    %Calculate optimal water levelwater_level = ( Power +sum( lamda_seq_sorted(1:used_length) )

    )/used_length;Cov_I_Sig = zeros(N_tx,N_tx); % Covariance matrix of interference + signal

    of interestS_k = zeros(max(N_rx),max(N_rx),length(selected_user_set));for user_index = 1:length(selected_user_set)

    S_k(1:N_rx(selected_user_set(user_index)),1:N_rx(selected_user_set(user_index)),user_index) =...

    U_v(1:N_rx(selected_user_set(user_index)),1:N_rx(selected_user_set(user_index)),user_index)*...

    diag( max(water_level -1./Lamda_vec(1:N_rx(selected_user_set(user_index)),user_index),0) )*...

    U_v(1:N_rx(selected_user_set(user_index)),1:N_rx(selected_user_set(user_index)),user_index)';

    Cov_I_Sig = Cov_I_Sig +V_precoding(1:N_tx,1:N_rx(selected_user_set(user_index)),user_index)*...

    S_k(1:N_rx(selected_user_set(user_index)),1:N_rx(selected_user_set(user_index)),user_index)*...

    V_precoding(1:N_tx,1:N_rx(selected_user_set(user_index)),user_index)';endactual_sum_rate = 0;for user_index = 1:length(selected_user_set)

    actual_sum_rate = actual_sum_rate +...log2( det(

    No(selected_user_set(user_index))*eye(N_rx(selected_user_set(user_index))) +...

    CFR_Rx(1:N_rx(selected_user_set(user_index)),1:N_tx,kk,selected_user_set(user_in-dex),OFDM_sym)*...

    Cov_I_Sig*...

    CFR_Rx(1:N_rx(selected_user_set(user_index)),1:N_tx,kk,selected_user_set(user_in-dex),OFDM_sym)' )/...

    det(No(selected_user_set(user_index))*eye(N_rx(selected_user_set(user_index))) +...

    CFR_Rx(1:N_rx(selected_user_set(user_index)),1:N_tx,kk,selected_user_set(user_in-dex),OFDM_sym)*...

    ( Cov_I_Sig -...

  • Trang 81

    V_precoding(1:N_tx,1:N_rx(selected_user_set(user_index)),user_index)*...

    S_k(1:N_rx(selected_user_set(user_index)),1:N_rx(selected_user_set(user_index)),user_index)*...

    V_precoding(1:N_tx,1:N_rx(selected_user_set(user_index)),user_index)' )*...

    CFR_Rx(1:N_rx(selected_user_set(user_index)),1:N_tx,kk,selected_user_set(user_in-dex),OFDM_sym)' ) );

    endendtotal_rate_frame = total_rate_frame + actual_sum_rate;

    endend