Raytraced Channel with Heterogeneous Conformal Array

58 views (last 30 days)
Dimitry Melnikov
Dimitry Melnikov on 6 Nov 2024 at 18:30
Answered: Suraj Kumar on 19 Nov 2024 at 11:25
I'm trying to simulate a raytraced MIMO channel, where the elements on each array have different patterns.
I found this answer that's pretty similar to what I'm looking for, but the phased.HeterogeneousConformalArray doesn't seem to be compatible with the Communications toolbox -- which looks like it's expecting an array of uniform elements (between arrayConfig, phased.CustomAntennaElement, phased.ConformalArray, etc.).
Is there a way to efficiently raytrace a channel with arrays holding unique elements (such as a phased.CustomAntennaElement generated from known calculated/measured magnitude & phase patterns)? Or is the only option to use raytrace, radiator, and collector on each ray?
Here's a snippet of what I'm trying to do (but fails due to working with a non-homogeneous array):
% Physical constant
fc = 5.8e9;
% Generate RX Array with arbitrary elements
rx_elem = {design(monopole, fc), design(helix, fc), design(fractalCarpet, fc), design(cloverleaf, fc)};
rx_pos = [0, 0, 0, 0; 1, 2, 3, 4; 0, 0, 0, 0];
rxArray = phased.HeterogeneousConformalArray(...
"ElementSet", rx_elem,...
"ElementPosition", rx_pos,...
"ElementIndices", [1, 2, 3, 4]);
% Generate TX Array with one element
txArray = arrayConfig("Size",[1 numSTAant]);
% Set up the TX & RX:
tx = txsite("cartesian", ...
"Antenna",txArray, ...
"AntennaPosition", [10; 0; 0], ...
'TransmitterFrequency',fc);
rx = rxsite("cartesian", ...
"AntennaPosition", [0; 0; 0], ...
"Antenna",rxArray);
% Start up the Ray Tracing Model:
pm = propagationModel("raytracing", ...
"CoordinateSystem","cartesian", ...
"Method","sbr", ...
"AngularSeparation","low", ...
"SurfaceMaterial","plasterboard");
rays = raytrace(tx,rx,pm);
%% Generate the Raytraced Communication Channel
rtChan = comm.RayTracingChannel(rays,tx,rx);

Answers (1)

Suraj Kumar
Suraj Kumar on 19 Nov 2024 at 11:25
Hi Dimitry,
To simulate a raytraced MIMO channel with arrays that have unique elements, you need to ensure that the elements are correctly set up and that the ray tracing can handle the heterogeneous nature of your arrays.
You can use phased.CustomAntennaElement to define custom radiation pattern explicitly.Please refer to the following code snippet :
customElem = phased.CustomAntennaElement('FrequencyVector', [fc], ...
'MagnitudePattern', patternMagnitude, ...
'PhasePattern', patternPhase);
You can replace the "patternMagnitude" and "patternPhase" with the data and adjust the "FrequencyVector" and add other parameters as required .
To learn more about custom antenna element, please refer to the following documentation:
Hope this helps!

Community Treasure Hunt

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

Start Hunting!