How do I simulate a ground antenna with a V shaped reflector?

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)

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
fcMHz = 122
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
reflectorDesign = struct with fields:
Spacing_m: 0.5800 CornerAngle_deg: 140 GroundPlaneLength_m: 0.8600 GroundPlaneWidth_m: 1.0500
Radiation Pattern
The updated reflector geometry solves and the pattern can be evaluated at fc.
pattern(rc,fc)
Warning: Graphics acceleration hardware is unavailable. Graphics quality and performance might be diminished. See MATLAB System Requirements.
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

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)

Sign in to comment.

Categories

Products

Release

R2026a

Tags

Asked:

on 9 Jun 2026

Commented:

on 10 Jun 2026

Community Treasure Hunt

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

Start Hunting!