Why does the nrCDLchannel add a cluster when enabling LOS using custom delay profiles?

4 views (last 30 days)
Hi, I am trying to use custom CDL channel profiles. I am generating my desired channel parameters following 3GPP document 38.901 section 7.5. When I enter the parameters for a LOS channel and toggle the LOS path boolean in the nrCDLChannel it adds the LOS cluster seperate from the LOS path I already had. See the below command line snippet, I make the 'channel' variable with my desired nrCDLChannel. When I get the channel's info with the HasLOSCluster flag set to false I get the desired 6 paths. The path I intend to be the LOS path is at index 1, with the delay of 0. When I enable the HasLOSCluster flag it automatically adds a new path and changes my desrired LOS path.
Is there a way for me to set this up so that it doesn't automatically add another path? I was going to just leave the HasLOSCluster flag off, but I don't like that it lists my LOS path as NLOS in the channel info. Any ideas?
Thanks,
Ben
K>> channel
channel =
nrCDLChannel with properties:
DelayProfile: 'Custom'
PathDelays: [0 6.3386e-07 6.9202e-07 9.6487e-07 1.2195e-06 2.5226e-06]
AveragePathGains: [0 -6.4175 -12.2459 -14.0477 -15.4566 -10.7516]
AnglesAoD: [94.0957 78.4449 48.9214 50.9475 131.0597 51.0655]
AnglesAoA: [-85.7702 64.9632 208.3313 151.1000 122.9303 -80.7645]
AnglesZoD: [99.4950 95.3059 106.0319 91.7445 91.2786 105.3484]
AnglesZoA: [80.8382 85.6076 73.3047 88.8311 72.1608 87.4899]
HasLOSCluster: false
AngleSpreads: [18.0722 50.9230 2.6197 2.8877]
RayCoupling: 'Random'
XPR: [6×20 double]
InitialPhases: 'Random'
CarrierFrequency: 2.0000e+09
MaximumDopplerShift: 6.6667
UTDirectionOfTravel: [2×1 double]
SampleRate: 30720000
TransmitAntennaArray: [1×1 struct]
TransmitArrayOrientation: [3×1 double]
ReceiveAntennaArray: [1×1 struct]
ReceiveArrayOrientation: [3×1 double]
NormalizePathGains: true
SampleDensity: 64
InitialTime: 0
NumStrongestClusters: 0
RandomStream: 'mt19937ar with seed'
Seed: 73
NormalizeChannelOutputs: true
ChannelFiltering: true
TransmitAndReceiveSwapped: false
K>> info(channel)
ans =
struct with fields:
KFactorFirstCluster: -Inf
ClusterTypes: {'NLOS' 'NLOS' 'NLOS' 'NLOS' 'NLOS' 'NLOS'}
PathDelays: [0 6.3386e-07 6.9202e-07 9.6487e-07 1.2195e-06 2.5226e-06]
AveragePathGains: [0 -6.4175 -12.2459 -14.0477 -15.4566 -10.7516]
AnglesAoD: [94.0957 78.4449 48.9214 50.9475 131.0597 51.0655]
AnglesAoA: [-85.7702 64.9632 208.3313 151.1000 122.9303 -80.7645]
AnglesZoD: [99.4950 95.3059 106.0319 91.7445 91.2786 105.3484]
AnglesZoA: [80.8382 85.6076 73.3047 88.8311 72.1608 87.4899]
NumTransmitAntennas: 32
NumInputSignals: 32
NumReceiveAntennas: 4
NumOutputSignals: 4
ChannelFilterDelay: 7
K>> channel.HasLOSCluster = c;
K>> channel
channel =
nrCDLChannel with properties:
DelayProfile: 'Custom'
PathDelays: [0 6.3386e-07 6.9202e-07 9.6487e-07 1.2195e-06 2.5226e-06]
AveragePathGains: [0 -6.4175 -12.2459 -14.0477 -15.4566 -10.7516]
AnglesAoD: [94.0957 78.4449 48.9214 50.9475 131.0597 51.0655]
AnglesAoA: [-85.7702 64.9632 208.3313 151.1000 122.9303 -80.7645]
AnglesZoD: [99.4950 95.3059 106.0319 91.7445 91.2786 105.3484]
AnglesZoA: [80.8382 85.6076 73.3047 88.8311 72.1608 87.4899]
HasLOSCluster: true
KFactorFirstCluster: 13.3000
AngleSpreads: [18.0722 50.9230 2.6197 2.8877]
RayCoupling: 'Random'
XPR: [6×20 double]
InitialPhases: 'Random'
CarrierFrequency: 2.0000e+09
MaximumDopplerShift: 6.6667
UTDirectionOfTravel: [2×1 double]
SampleRate: 30720000
TransmitAntennaArray: [1×1 struct]
TransmitArrayOrientation: [3×1 double]
ReceiveAntennaArray: [1×1 struct]
ReceiveArrayOrientation: [3×1 double]
NormalizePathGains: true
SampleDensity: 64
InitialTime: 0
NumStrongestClusters: 0
RandomStream: 'mt19937ar with seed'
Seed: 73
NormalizeChannelOutputs: true
ChannelFiltering: true
TransmitAndReceiveSwapped: false
K>> info(channel)
ans =
struct with fields:
KFactorFirstCluster: 13.3000
ClusterTypes: {'LOS' 'NLOS' 'NLOS' 'NLOS' 'NLOS' 'NLOS' 'NLOS'}
PathDelays: [0 0 6.3386e-07 6.9202e-07 9.6487e-07 1.2195e-06 2.5226e-06]
AveragePathGains: [-0.1985 -13.4985 -6.4175 -12.2459 -14.0477 -15.4566 -10.7516]
AnglesAoD: [94.0957 94.0957 78.4449 48.9214 50.9475 131.0597 51.0655]
AnglesAoA: [-85.7702 -85.7702 64.9632 208.3313 151.1000 122.9303 -80.7645]
AnglesZoD: [99.4950 99.4950 95.3059 106.0319 91.7445 91.2786 105.3484]
AnglesZoA: [80.8382 80.8382 85.6076 73.3047 88.8311 72.1608 87.4899]
NumTransmitAntennas: 32
NumInputSignals: 32
NumReceiveAntennas: 4
NumOutputSignals: 4
ChannelFilterDelay: 7

Answers (1)

Abhimenyu
Abhimenyu on 1 Dec 2023
Hi Ben,
I understand that the “nrCDLChannel function is adding the line-of-sight (LOS) cluster separate from the LOS path you already had when you are generating your desired channel parameters following 3GPP document 38.901 section 7.5.
The HasLOSCluster property specifies whether the channel model includes a line-of-sight (LOS) cluster. When this property is set to true, the object adds a LOS cluster as the first cluster in the channel model, with zero delay and zero angle spread. This cluster represents a direct path between the transmitter and receiver without any obstructions. The object also scales the average path gains of the other clusters to maintain the total power of the channel.
Therefore, if there is a LOS path already in the custom channel profile, the HasLOSCluster property need not to be set to true, because it will create a redundant cluster. The HasLOSCluster property can be set to false. The desired LOS path can still be used. The channel info will list the LOS path as NLOS, but this is only a label and does not affect the channel behaviour.
Alternatively, if the HasLOSCluster property must be set to true, the LOS path can be removed from the custom channel profile and the object will create it automatically using the property. This way, there will be only one LOS cluster in the channel model, and the channel info will list it as LOS.
Please refer to the below mentioned MATLAB documentation link to understand more on nrCDLChannel” function:
I hope this helps to resolve the query.
Thanks,
Abhimenyu

Categories

Find more on End-to-End Simulation in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!