[ANN] ArraySynthesis.jl: Antenna array pattern synthesis via convex optimization

Hi everyone!

I’d like to announce ArraySynthesis.jl, a Julia package for antenna array pattern synthesis.

ArraySynthesis.jl provides a high-level, domain-specific interface for formulating array factor synthesis problems for arbitrary array geometries. It supports several excitation models (arbitrary excitations, real amplitudes, progressive phase and conjugate symmetry) and a range of common synthesis objectives, including:

  • Minimum sidelobe level (MinSLL)
  • Maximum array factor in a given direction (MaxAF)
  • Sparse/thinned array synthesis
  • Multipattern synthesis
  • …and more

The package currently focuses on array factor synthesis, so effects such as mutual coupling are not considered.

Optimization problems are built using JuMP, so they’re compatible with a wide range of solvers.

As a quick example, here’s a flat top beam with a controlled ripple and low sidelobes on both sides, using a symmetric linear array:


using ArraySynthesis
using ArraySynthesis: °, dB
using HiGHS

beam_region = region(12.5°..37.5°, 1°)
sll_region1 = region(-90°..6.5°, 1°)
sll_region2 = region(43.5°..90°, 1°)

p = pattern(shaped_beam(beam_region, 1.0, ripple = -0.6dB))
obj = MinSLL(join_regions(sll_region1, sll_region2))
array = symmetric_linear_array(24, d = 0.5)

result = synthesize(array, p, obj, ConjugateSymmetricWeights(), LP(), HiGHS.Optimizer)

And a quick glimpse at a few of the things you can build with it:

This project started from a collection of MATLAB scripts and examples I wrote some years ago while studying antenna array synthesis using convex optimization. I recently decided to revisit that work and give those ideas a more structured form as a Julia package. It is certainly a niche topic, but I hope some of you will find it interesting.


Documentation: https://uvegege.github.io/ArraySynthesis.jl/

The package isn’t registered yet, but you can try it out by adding it directly from the GitHub URL: Pkg.add(url="https://github.com/uvegege/ArraySynthesis.jl")

Feedback and suggestions are very welcome!

6 Likes