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!
