Create array of customAntennaStl with multiple feeding points

3 次查看(过去 30 天)
Hi,
I am new to Matlab.
I want to create an array of antennas from a STL model I have made.
So far my code looks like this:
antenna = customAntennaStl(FileName=...*insert filepath*);
antenna.createFeed([0.55 0.635 0],1);
% Reduce the mesh size for faster calculations
mesh(antenna, MaxEdgeLength = 0.05);
figure
show(antenna)
I have tried unsuccessfully to create an array out of this single element. All the methods I found only work for predesigned antennas.
Ideally I want to create a square array of such antennas that would look like the photo attached, with multiple feeding points, since the antennas are not connected.
Please note that I am not attached to using a customAntennaStl, I would be interested in any other method, as long as I can roughly keep the shape of the antenna. The antenna can also be flattened to two dimensions. Any suggestions appreciated
--------
For completeness in the simulation I want to do, antennas facing each other are driven with opposite phases at a certain frequency. The two pairs of antennas are driven in quadrature.
Necessary files are attached.

回答(1 个)

Aditya Saikumar
Aditya Saikumar 2024-7-15
Hi Youssef,
To create an array of antennas as shown in the image given, "circularArray" function can be used.
Create array of antennas:
% Read the STL file
tr = stlread('single_antenna_for_matlab_3d.stl');
antennaShape = shape.Custom3D(tr);
% Create antennas
antenna1 = customAntenna(shape=antennaShape);
antenna2 = customAntenna(shape=antennaShape);
antenna3 = customAntenna(shape=antennaShape);
antenna4 = customAntenna(shape=antennaShape);
% Create feed points for each antenna
antenna1.createFeed([0.55 0.635 0],1);
antenna2.createFeed([0.55 0.635 0],1);
antenna3.createFeed([0.55 0.635 0],1);
antenna4.createFeed([0.55 0.635 0],1);
% Tilt the antennas
antenna1.Tilt = 270;
antenna1.TiltAxis = "Z";
antenna2.Tilt = 0;
antenna2.TiltAxis = "Z";
antenna3.Tilt = 90;
antenna3.TiltAxis = "Z";
antenna4.Tilt = 180;
antenna4.TiltAxis = "Z";
% Create a vector of the antennas
antennas = [antenna1, antenna2, antenna3, antenna4];
% Create a circular antenna array
array = circularArray('Element', antennas, 'Radius', 0.7); % Adjust radius as needed
% Set phase shift
array.PhaseShift = [0 0 180 180];
% Reduce the mesh size for faster calculations
mesh(array, 'MaxEdgeLength', 0.05);
% Visualize the antenna array
figure;
show(array);
Output:
"circularArray" object can be used to set properties for the whole array. To learn more about it, please go through the following documentation link:
"customAntenna" object can be used to set properties for the individual antennas. To learn more about it, please go through the following documentation link:
To learn more about rotating antennas and arrays, please go through the following documentation link:
Regards,
Aditya

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by