Raytraced Channel with Heterogeneous Conformal Array
58 views (last 30 days)
Show older comments
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);
0 Comments
Answers (1)
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!
0 Comments
See Also
Categories
Find more on Link-Level Simulation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!