Massive MIMO Simulation -spatialChannelModel

Viewing 15 posts - 1 through 15 (of 20 total)
  • Author
    Posts
  • #15251
    Farhan
    Participant

    Hi,

    In Massive MIMO scenario, when I set scStr.channel.spatialChannelModel = True;

    followed by the below Configurations

    scStr.channel.nSpatialPaths                 = [10];       
    scStr.channel.angleMeanAOA                  = [90]; 
    scStr.channel.angleMeanZOA                  = [45];       
    scStr.channel.angleSigmaAOA                 = [5];        
    scStr.channel.angleSigmaZOA                 = [5];   
    scStr.channel.kFactor                       = [5];        
    scStr.channel.antennaSpacing                = [1/2];    

    I am getting this error I am pasting below,

    > In main (line 48)
    Error using Channel.FastFading/NewRealization (line 395)
    Matrix dimensions must agree.

    Error in Channel.FastFading (line 231)
    obj.NewRealization(0);

    Error in Parameters.SimulationParameters/initializeLinks (line 1613)
    Links{linkX, linkY}.Channel = Channel.FastFading(
    obj.modulation.samplingRate,…

    Error in main (line 48)
    parfor iSweep = 1:length(simParams.simulation.sweepValue) % this may be ‘for’ or ‘parfor’

    Please let me know which parameter I am setting incorrectly or share sample parameters!

    • This topic was modified 9 months, 1 week ago by Farhan.
    #15273
    Farhan
    Participant

    @Bashar

    If you can please respond here.

    Warm Regards,
    Farhan

    #15276
    Bashar Tahir
    Participant

    Dear Farhan,

    The spatialChannelModel requires setting the number of the horizontal and vertical antenna elements in scStr.simulation.antennaConfiguration. Their product should be equal to the total number of transmit antennas, that is, nHor x nVer = nTxAntennas.

    At the moment in the simulator, the antennaConfiguration is fixed. In the massiveMIMO sceraio, it is set to {[4,4]}, which corresponds to 16 transmit antennas. This is the reason you are getting this error, because when you sweep over nAntennasBaseStation and it is not 16, then you get a mismatch error, as the antennaConfiguration does not match nAntennasBaseStation.

    So, you can use the following fix: Go to +Parameters/SimulationParameters.m, then go to the function initializeLinks(obj, Links, BS, UE). Add the following line to the begining of function:
    obj.simulation.antennaConfiguration(:) = {[obj.simulation.nAntennasBaseStation(1), 1]};

    This will make sure that the antennaConfiguration is adjusted based on nAntennasBaseStation. Here, [obj.simulation.nAntennasBaseStation(1), 1] means that the configuration correponds to a uniform linear array (ULA), where all the antennas are put on the horizontal direction (1D).

    Best regards,
    Bashar

    #15280
    Farhan
    Participant

    Hi Bashar,

    I have added obj.simulation.antennaConfiguration(:) = {[obj.simulation.nAntennasBaseStation(1), 1]}; on line 1196 and below is the snippet

     function Links = initializeLinks(obj, Links, BS, UE)
    obj.simulation.antennaConfiguration(:) = {[obj.simulation.nAntennasBaseStation(1), 1]};
                % this function  initializes all links according to some
                % scenario setting
                L = length(Links);
                
                nBS = length(BS);

    I have set
    scStr.channel.spatialChannelModel = true; in original massiveMIMO scenario file

    But now I am getting this error below:

    Error using Parameters.SimulationParameters/checkParameters (line 743)
    There must be an azimuth AoA distribution mean value defined for each link!

    Error in Parameters.SimulationParameters (line 30)
    obj.checkParameters();

    Error in main (line 23)
    simParams = Parameters.SimulationParameters(simulationScenario);

    #15281
    Farhan
    Participant

    Do I need to change this below parameter:

    
    scStr.channel.angleMeanAOA                  = [90,60,45]; 

    in Original massiveMIMO scenario file?

    If yes, What value should I set?

    #15288
    Bashar Tahir
    Participant

    There are 16 links in your scenario, and therefore you should define an angle for each link (i.e., you need to enter 16 values). Of course, you can enter just a single angle, which then would be applied to all links; however, this means that all the users lie in the same direction, which for high K-factors, means that you cannot seperate the users spatially, and will result in a huge performance drop.

    So unless you want to investigate the performance of closely-spaced users, you should set the angles arbitrarily in the range of [0, 360] degrees. Also, since each user has an uplink and downlink, you might want to have some consistency between the uplink and downlink links. Check the user manual for further information about the assumed corrdinate system. But yeah, you can just ignore that and set the angles for all links arbitrarily.

    Best,
    Bashar

    #15295
    Farhan
    Participant

    Hi Bashar,

    Thanks for your reply, I am interested to investigate the performance of closely-spaced users as well as sparsely spaced users. Referencing Manual’s Spherical angles definition in a Cartesian coordinate system, There are two parameters:

    
    scStr . channel . angleMean AOA 
    scStr . channel . angleMean ZOA 

    if I enter values like below:
    scStr.channel.angleMeanAOA = [0,90,180,270,0,90,180,270,0,90,180,270,0,90,180,270,];
    scStr.channel.angleMeanZOA = [90,60,45,30,90,60,45,30,90,60,45,30,90,60,45,30];

    As per my understanding, This Means UE1 corresponds to AngleMeanAOA to “0 degree” and AngleMeanZOA “90 degree” in Downlink and UE2 is having AngleMeanAOA “90 degree” and AngleMeanZOA “60 degree” in Downlink and so on and same analogy for last 8 values except that they corresponds to uplink. Even though I have set scenario like this the performance is almost the same for First four UE’s and last four UE’s . I am expecting that individual performance of the UE for example UE1 and UE2 to differ from each other as they have different AOA and ZOA but they are the same. Can you please guide in this regard?

    #15307
    Bashar Tahir
    Participant

    Dear Farhan,

    I am not sure why do you expect to see a difference. As long as they are sufficiently separable, then they would have a similar performance, given that they are being operated with the same CQI.

    I suggest to start with only a single BS with two users, disable the uplink, and just look at the downlink performance. Set the K factor high (20 or something), so it is mainly LOS dominated. Fix the angleMeanZOA to 45, angleSigmaAOA and angleSigmaZOA to 0, and then change the AOA angles of the two users and see what happens. For similar AOA angles, you should see a substantial performance drop, compared to the case where they are sufficiently separated.

    Best,
    Bashar

    • This reply was modified 8 months, 3 weeks ago by Bashar Tahir.
    #15310
    Farhan
    Participant

    Hi Bashar,

    Thanks for your reply. I am now setting the simulation as suggested by you. Moreover I was thinking whether the BS uses a number of sectors. If this is the case, what do the different AOAs mean if say the antenna covers a 120 degree sector?

    Regards,
    Farhan

    #15311
    Bashar Tahir
    Participant

    There are no sectors in the link-level simulator. The AoA is from 0 to 360 degrees.

    Best,
    Bashar

    #15440
    Farhan
    Participant

    Hi Bashar,

    Thanks for your reply and usual help. I have followed your suggestion and My configurations are Below:

    scStr.channel.angleMeanAOA                 = [0,90,180,270,0,90,180,270,0,90,180,270,0,90,180,270];
    scStr.channel.angleMeanZOA                  = [45];
    scStr.channel.angleSigmaAOA                 = [5]; 
    scStr.channel.angleSigmaZOA                 = [5]; 
    scStr.channel.kFactor                       = [5]; 

    My Question is as I have set them sufficiently separated and they are being operated with the same CQI, now ZF and MRT should perform. Why ZF is having better performance when all UE(1-8) are all separated?

    P.S: My scenario is same where UE’s 1 to 4 are associated with BS1 whereas UE’s 5 to 8 are connected to BS2, both for downlink as well as for uplink.
    Zero Forcing (ZF) precoding for BS1
    Maximum Ratio Transmission (MRT) precoding for BS2

    #15478
    Farhan
    Participant

    Moreover after enabling spatial, UE docked with ZF BS are all giving same performance whereas UE docked with MRT BS have difference in their graph

    #15487
    Bashar Tahir
    Participant

    Dear Farhan,

    Sorry for the late reply. We had to do some slight updates to the current version (1.2). Please redownload the simulator using the same owncloud link you were given. Do not forget to put the line
    obj.simulation.antennaConfiguration(:) = {[obj.simulation.nAntennasBaseStation(1), 1]};
    in the SimulationParameters file as before.

    So first of all, MRT/MRC will only have the same performance as ZF if the spatial channels of the users are orthogonal (or maybe very close to orthogonal; how sensitive it is depends on the CQI). Assuming you have perfect LOS, the channel of the user is given by the array response, which depends on the angles of arrival/departure in 3D (azimuth and elevation; see the manual for the reference axis). Therefore, if you want to see a similar performance between MRT/MRC and ZF, you need to set the angles such that the array responses of the users are orthogonal.

    An example configuration is the following; consider two BSs, each having two UEs:

    scStr.topology.nodes                        = ['BS1,BS2,UE1,UE2,UE3,UE4']; 
    scStr.topology.primaryLinks                 = ['BS1:UE1,' ...
                                                   'BS1:UE2,' ...
                                                   'BS2:UE3,' ...
                                                   'BS2:UE4,' ...
                                                   'UE1:BS1,' ...
                                                   'UE2:BS1,' ...
                                                   'UE3:BS2,' ...
                                                   'UE4:BS2' ...
                                                   ];  						   
    

    In order to avoid setting orthogonality in 3D, I will set angleMeanZOA to 90 for all links. In this case, the setup becomes more or less 2D. Then, in order to obtain orthogonal array responses, the angles of the users are set to 0 and 90. The configuration of the spatial channel model is given by:

    scStr.channel.spatialChannelModel           = true;      
    scStr.channel.nSpatialPaths                 = [1];       
    scStr.channel.angleMeanAOA                  = [0,90,0,90,0,90,0,90];
    scStr.channel.angleMeanZOA                  = [90];
    scStr.channel.angleSigmaAOA                 = [0.0001];
    scStr.channel.angleSigmaZOA                 = [0.0001]; 
    scStr.channel.kFactor                       = [50];         
    scStr.channel.antennaSpacing                = [1/2];  
    

    For such a LOS setup, the array responses are orthogonal, and therefore you will get the same performance for both MRT/MRC and ZF.

    Now, in the example you have given above, you set the angles for the four users according to 0, 90, 180, and 270. You have to be careful here. 0 and 180 are mirrors of each other; the same is for 90 and 270. So the users at 0 and 180 are fully interfering with each other, same for 90 and 270.

    In conclusion, to get the same performance between MRT/MRC and ZF in a LOS scenario, you need to make sure that the resulting array responses are orthogonal (which depends on the 3D angles of the users).

    Best regards,
    Bashar

    #15488
    Farhan
    Participant

    Dear Bashar,

    Thanks for your detailed reply. I asked this earlier and asking it again, In this Massive MIMO Scenario, if we don’t keep the array responses to orthogonal, ZF is performing better as compared to MRT, which is a well known fact and have been reported in literature. if the spatial channels of the users are orthogonal, performance of ZF and MRT/MRC is same, My question here is that what was the motivation behind setting up this scenario or if I say what is the new insight this scenario can provide? Can you suggest any new ideas which can be done using this scenario? I am looking for some novel idea. Thanks!

    Regards,
    Farhan

    #15489
    Mariam Mussbah
    Keymaster

    Dear Farhan,

    The motivation behind the massive MIMO scenario is to demonstrate the simulator’s massive MIMO capabilities and give the users an idea about how to set up a massive MIMO scenario.

    Best,
    Mariam

Viewing 15 posts - 1 through 15 (of 20 total)
  • The forum ‘Vienna 5G Link Level Simulator’ is closed to new topics and replies.