How do I simulate a ground antenna with a V shaped reflector?
Show older comments
I managed to build a ground antenna but I am not able to build a V shpaped reflector around it. This is what the code looks like for now:
tx = design(monopoleRadial, fc);
%% Adjust Rod Lengths and Radial Angles
% 1. Set the vertical monopole rod length (in meters)
tx.Height = 0.58;
% 2. Set the length of each ground radial rod (in meters)
tx.RadialLength = 0.58;
% 3. Set the angle between the radials and the horizontal plane (in degrees)
tx.RadialTilt = 45;
% 4. Set the total number of ground radials
tx.NumRadials = 4;
% Designing a reflector
rc = reflectorCorner;
rc.Exciter = tx;
rc.Spacing = 0.15;
rc.CornerAngle = 90;
rc.GroundPlaneLength = 0.86;
rc.GroundPlaneWidth = 1.05;
rc.rotate([1 0 0], 90);
figure;
show(rc)
pattern(rc, fc)
I know I have to shift it as well but the error that is showing is for rc.rotate([1 0 0], 90) and I tried to get help of the Copilot but it did not help.
Answers (1)
Cris LaPierre
on 10 Jun 2026
Edited: Cris LaPierre
on 10 Jun 2026
I am not an antenna expert, but was intrigued because you said Copilot did not help. I therefore tried to understand the issue with my own prompting.
Note that we do not have your design requirements, so this response is exploratory at best.
The main issue I found is that reflectorCorner does not have a rotate method, so rc.rotate([1 0 0],90) is invalid. You probably need to use a supported property like Tilt and TiltAxis.
For testing, I used fc = 122 MHz. My goal was to get a working reflector rather than preserving all the original design parameters. The main implication is that, for your given antenna geometry, a strict 90 degree V reflector was problematic.
Working Frequency
The value below is the validated starting frequency for the stated monopole dimensions.
fc = 122e6;
fcMHz = fc/1e6
Build the Working Reflector
This section uses the construction order that solved correctly in MATLAB.
rc = reflectorCorner;
rc.Exciter = monopoleRadial;
rc = design(rc,fc);
rc.Exciter.Height = 0.58;
rc.Exciter.RadialLength = 0.58;
rc.Exciter.RadialTilt = 45;
rc.Exciter.NumRadials = 4;
rc.Spacing = 0.58;
rc.CornerAngle = 140;
rc.GroundPlaneLength = 0.86;
rc.GroundPlaneWidth = 1.05;
rc.TiltAxis = [1 0 0];
rc.Tilt = 90;
show(rc)
Resulting Reflector Geometry
The reflector panel size is left at the value generated by design because smaller manual panel sizes caused mesh intersection errors.
reflectorDesign = struct;
reflectorDesign.Spacing_m = rc.Spacing;
reflectorDesign.CornerAngle_deg = rc.CornerAngle;
reflectorDesign.GroundPlaneLength_m = rc.GroundPlaneLength;
reflectorDesign.GroundPlaneWidth_m = rc.GroundPlaneWidth;
reflectorDesign
Radiation Pattern
The updated reflector geometry solves and the pattern can be evaluated at fc.
pattern(rc,fc)
Changes from your original script
- Replaced the invalid rotate call with the supported Tilt and TiltAxis properties
- Set fc = 122e6 Hz as the working frequency for the monopole geometry with Height = 0.58 m, RadialLength = 0.58 m, RadialTilt = 45 deg, and NumRadials = 4
- Built the reflector by assigning rc.Exciter = monopoleRadial first and then calling rc = design(rc,fc)
- Reapplied the custom monopole dimensions after design because the reflector design step resized the exciter
- Increased Spacing to 0.58 m because smaller tested values produced reflector intersection errors
- Kept the original reflector panel dimensions of GroundPlaneLength = 0.86 m and GroundPlaneWidth = 1.05 m because those values do work once the spacing and corner angle are corrected
- Used CornerAngle = 140 deg because a tighter 90 deg V-shape still intersected for this monopole radial geometry
If a strict 90 deg V-reflector is still required, the built-in reflectorCorner object is not enough for this monopole radial geometry and a custom reflector geometry will be needed.
If the monopole dimensions change, rerun an S-parameter or impedance sweep and update fc before redesigning the reflector.
1 Comment
Cris LaPierre
on 10 Jun 2026
So the biggest change is with the position of the V reflector. In the original code, it was too close to the monopole/radials and collided with the antenna geometry, leading to the 'Intersection detected in specified geometry.' error.

I had to move the reflector placement to fix this error when running pattern(rc,fc)
Categories
Find more on Array Catalog 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!
