3D spatial channel model

Dear Sir/Madam,
I am implementing a V2I scenario where I want to implement CDL channel models described in 3GPP 38.901. To do that I am using 3D Spatial Channel Model which is already implemented here. But I’m getting this error.

Arrays have incompatible sizes for this operation.

Error in Channel.FastFading/NewRealization (line 405)
Hlos = fieldPatternRxLOS.’ * [1,0;0,-1] * fieldPatternTxLOS .* (repmat(arrayVectorRx,obj.Nr.txAntennas,1).') .* repmat(arrayVectorTx,obj.Nr.rxAntennas,1);

Error in Channel.FastFading (line 237)

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

Error in main (line 109)
Links = simParams.initializeLinks(Links, BS, UE); %#ok

%%% The part of the code where I have defined the channel.%%%%%
scStr.channel.spatialChannelModel = true;
scStr.channel.nSpatialPaths = [10];
scStr.channel.angleMeanAOA = [90];
scStr.channel.angleMeanZOA = [45];
scStr.channel.angleSigmaAOA = [0];
scStr.channel.angleSigmaZOA = [0];
scStr.channel.kFactor = [5];
scStr.channel.antennaSpacing = [1/2];

scStr.channel.powerDelayProfile = ‘VehicularA’;
scStr.simulation.nAntennasBaseStation = [8];
scStr.simulation.antennaConfiguration = {[8,1]};
scStr.simulation.nAntennasUser = [4];
scStr.simulation.userVelocity = [20];


It is not throwing an error on my computer. Also, I am not sure how are you getting to the line of
Hlos = fieldPatternRxLOS.’ * [1,0;0,-1] * fieldPatternTxLOS .* (repmat(arrayVectorRx,obj.Nr.txAntennas,1).') .* repmat(arrayVectorTx,obj.Nr.rxAntennas,1);

This line would be executed if the user velocity is zero, while in your parameters, you have the userVelocity set to 20. So I am not sure how you are arriving there.

If you are using the simulator as is (and I am assuming you are using version 1.2), then you can post your whole scenario file here and I can try to run it on my computer.


Thank you for your reply. Yes, I found out my mistake. I want to implement NR CDL channel models described in 3GPP TR 38.901 version 16.1.0 (Study on channel model for frequencies from 0.5 to 100 GHz). As per your user manual, 3D Spatial channel model is already implemented in your simulator in FastFading class. My question is how can specify no. of clusters and no. of rays per cluster in your existing model?

The 3D channel model in the simulator is a custom model that was implemented by our team, and it only uses certain procedures based on the 3GPP model. As mentioned in the simulator manual, it is only inspired by the 3GPP model.

The model allows you to define a spatial setup, either arbitrary, or based on explicit geometry (with Release 1.3). Each link is assigned LOS and NLOS components; the LOS component defines the angular position of the node; the NLOS component corresponds to the propagation due to the different delay taps (except of the first tap, as it would be the LOS) defined by the PDP model. Then, each delay tap is assigned a sum of nSpatialPaths with a certain angular spread, thus forming a cluster. So, the number of clusters is equal to the number of the NLOS delay taps, and then each cluster/tap gets nSpatialPaths rays generated. You can find more information about the implementation in the manual.

You would need to implement the CDL model details yourself, but I would recommend upgrading to Release 1.3 of the simulator, since you can define geometry with it, and you also find an improved implementation of the 3D model, which you then might use as basis for your implementation.

Thank you, Sir.