- This topic has 7 replies, 3 voices, and was last updated 2 years, 9 months ago by Stefan Pratschner.
-
AuthorPosts
-
10. April 2018 at 6:48 #10255chaiParticipant
Dear all,
is it possible to run a 3 cells simulation using this simulator?
if yes, can show me how?
i get this error when trying to run the simulation:”Index exceeds matrix dimensions”
Chai
16. April 2018 at 7:44 #10266Stefan PratschnerKeymasterDear Chai,
yes it is possible, however, whether such a setup leads to meaningful results, depends on the scenario you have in mind.
Basically you have to declare all base stations (BS) and users (UE) within the scenario file and than additionally input all links pathlosses and attenuations. Can you please be more specific with your error message? Which matrix’ dimensions is exceeded?
best
Stefan17. April 2018 at 16:50 #10285chaiParticipantDear Mr. Stefan,
All the lines of the message are” Index exceeds matrix dimensions.
Error in Parameters.SimulationParameters/generateLinks (line 445)
mcs = obj.modulation.mcsValues(obj.modulation.mcs(BSiD));Error in main (line 49)
LinksParFor = simParams.generateLinks(Links, BS, UE); %#ok”as you can see, it doesnt mention specifically where did the error goes”
Chai
18. April 2018 at 7:17 #10290Stefan PratschnerKeymasterDear Chai,
please make sure that all parameters are set accordingly. If you want to simulate with three cells, you also need to define nodes within the topology correspondingly. For a three cell simulation you should have something like this
scStr.topology.nodes = ['BS1,BS2,BS3,UE1,UE2,UE3'];
In order to solve this issue, please post your scenario file such that I can check it.
best
Stefan18. April 2018 at 16:08 #10301chaiParticipantDear Dr. Stefan,
Below are exactly all the data that i used:
“% numerology scenario
%
% simulation setup to show simulation with different subcarrier
% spacings for different users with UFMC modulation%% Simulation Parameters
% set link types to simulate
scStr.simulation.simulateDownlink = true; % downlink
scStr.simulation.simulateUplink = false; % uplink
scStr.simulation.simulateD2D = false; % device to device links% plot options
scStr.simulation.plotOverSNR = true; % select to plot resulty over SNR instead of pathloss% define a sweep parameter
scStr.simulation.sweepParam = {‘simulation.pathloss’}; % sweep ove pathloss to obtain results over SNR
scStr.simulation.sweepValue = linspace(140,110,8); % Define parameter values to sweep over, in dB. A good starting point for the pathloss is 150 to 110scStr.simulation.nFrames = 1000; % number of frames to simulate per sweep value
scStr.simulation.txPowerUser = [30, 30, 30];
scStr.simulation.txPowerBaseStation = [30, 30, 30]; % 10dB more transmit power for UE1scStr.simulation.pathloss = 80;
scStr.simulation.nAntennasUser = [1, 1, 1]; % single antenna setup for all nodes
scStr.simulation.nAntennasBaseStation = [1, 1, 1];scStr.simulation.centerFrequency = 2.5e9;
scStr.simulation.channelEstimationMethod = ‘PilotAided’;
scStr.simulation.pilotPattern = ‘Diamond’;
scStr.simulation.equalizerType = ‘One-Tap’;
scStr.simulation.receiverTypeMIMO = ‘ZF’;%% Topology
% Specifiy all the nodes in ascending order with starting
% index of 1 (BS0 or UE0 is not allowed).
scStr.topology.nodes = [‘BS1,BS2,BS3,UE1,UE2,UE3’]; % 2 cells with one user each% Primary (desired) links
scStr.topology.primaryLinks = [ ‘BS1:UE1,’… % downlink links only
‘BS2:UE2,’…
‘BS3:UE3’ ];% Interference Links
scStr.topology.interferenceGeneration = ‘Automatic’; % automatic generation of interference links
scStr.topology.attenuation = 0; % set attenuation to zero to virtually have two users in one cellscStr.topology.interferingLinks = [ ‘BS1:UE1*0,’… % unused
‘BS2:UE2*0,’…
‘BS3:UE3*0’];%% Modulation Parameters
% waveform
scStr.modulation.waveform = { ‘f-OFDM’, … % waveform for each BS:
‘WOLA’, …
‘OFDM’ }; % ‘OFDM’ – Orthogonal Frequency Division Multiplexing
% ‘FBMC’ – Filer Bank MultiCarrier
% ‘UFMC’ – Universal Filtered MultiCarrier
% ‘f-OFDM’ – filtered OFDM
% ‘WOLA’ – Weighted OverLap and Add% parameters for FBMC
scStr.modulation.prototypeFilter = ‘PHYDYAS-OQAM’; % prototype filter for FBMC:
% ‘Hermite-OQAM’
% ‘Hermite-QAM’
% ‘Rectangle-QAM’
% ‘RRC-OQAM’
% ‘RRC-QAM’
% ‘PHYDYAS-OQAM’
% ‘PHYDYAS-QAM’% parameters for UFMC
scStr.modulation.nSubcarriersPerSubband = [12, 12, 12]; % number of subcarriers per subband
scStr.modulation.FilterLength = [112, 28]; % filter length% SISO transmission
scStr.modulation.transmissionMode = ‘spatial multiplexing’; % SM with single antenna equals a SISO transmission
scStr.modulation.precodingCodebook = ‘custom’;
scStr.modulation.mcs = [15, 15];
scStr.modulation.nStreams = [1, 1];
scStr.modulation.precodingMatrix{1} = 1;
scStr.modulation.precodingMatrix{2} = 1;% time and bandwidth setup
scStr.modulation.subcarrierSpacing = [15e3, 30e3, 15e3]; % select a four times bigger subcarrier spacing in the second cell
scStr.modulation.numerOfSubcarriers = [72, 36, 72]; % to have the same bandwidth, the total number of subcarriers must be one fourth on the second cell
scStr.modulation.nSymbolsTotal = [15, 30, 15]; % to have the same frame duration, the total number of symbols must be four times higher in the second cell
scStr.modulation.nGuardSymbols = [1, 2, 1]; % the total guard time has to be four times larger in the second cell to make frame durations match
scStr.modulation.samplingRate = ‘Automatic’; % sampling rate has to be the same for all nodes (across all base stations):
% either numeric value for manual setting or ‘Automatic’
scStr.modulation.oversamplingFactor = 2; % oversampling factor for sampling rate calculation, should be at least two%% Channel Coding Parameters
scStr.coding.code = {‘Turbo’, ‘Turbo’, ‘Turbo’};
scStr.coding.decoding = { ‘MAX-Log-MAP’,…
‘MAX-Log-MAP’,…
‘MAX-Log-MAP’};
scStr.coding.decodingIterations = [10, 10, 10];%% Schedule
% both users are scheduled the same total bandwidth
scStr.schedule.fixedSchedule{1} = [ ‘UE1:36,none:36’ ]; % first user gets the upper half of the first cells’s schedule
scStr.schedule.fixedSchedule{2} = [ ‘none:18,UE2:18’ ]; % second user gets the lower half of the second cells’s schedule
scStr.schedule.fixedSchedule{3} = [ ‘none:36,UE3:36’ ];%% Channel Parameters
scStr.simulation.userVelocity = [0, 0, 0];
scStr.channel.dopplerModel = ‘Discrete-Jakes’;
scStr.channel.nPaths = 50;
scStr.channel.powerDelayProfile = ‘PedestrianA’;”
Please guide me on what should i do.
Chai
23. April 2018 at 8:25 #10313Stefan PratschnerKeymasterDear Chai,
you are missing some modulation parameters for the third cell, please change to the following:
scStr.modulation.mcs = [15, 15, 15]; scStr.modulation.nStreams = [1, 1, 1]; scStr.modulation.precodingMatrix{1} = 1; scStr.modulation.precodingMatrix{2} = 1; scStr.modulation.precodingMatrix{3} = 1;
Let me know if you encounter further problems.
best
Stefan21. May 2018 at 10:35 #10458BPParticipantSir
I run the same simulation code mentioned above with corrections which you said but with UFMC,it gave me error:Error using Modulation.UFMC/SetDependentParameters (line 78)
Number of subbands has to be integer; otherwise it is necessary to add zeros artificiallyError in Modulation.UFMC (line 50)
obj.SetDependentParameters();Error in Modulation.Modulator (line 52)
obj.WaveformObject = Modulation.UFMC(varargin{5}, varargin{6}, varargin{7}, varargin{8},
varargin{9}, varargin{10}, varargin{11}, varargin{12}, varargin{13}, varargin{14});Error in Parameters.SimulationParameters/generateLinks (line 532)
Links{linkX, linkY}.Modulator = Modulation.Modulator( ‘QAM’,
mcs.modulationOrder, ‘UFMC’, …Error in main (line 49)
LinksParFor = simParams.generateLinks(Links, BS, UE);>>
28. May 2018 at 9:09 #10486Stefan PratschnerKeymasterHi,
this is because you are trying to schedule user 2 18 subcarriers, while an UFMC subband consists of 12 subcarriers. In the case of UFMC, the number of scheduled subcarriers has to be an integer multiple of the subband size. You can try to reduce the subband size to 6 subcarriers for example.
best
Stefan -
AuthorPosts
- You must be logged in to reply to this topic.