How to find optimum complex weighting coefficients for antenna beam pattern optimisation? A purely optimisation problem

6 views (last 30 days)
Hi, I need to optimize antenna pattern weights so that it has a certain value at certain directions. I've seen there is an example here: https://es.mathworks.com/company/newsletters/articles/synthesizing-an-array-from-a-specified-pattern-an-optimization-workflow.html also reproduced below
My objective is Beam_d, and stvmat is always a known vector (with complex numbers). What I want to find are the optimum weights in w
The following code seems to do the trick somehow; probably there are more advanced optimization options. The optimized weights output weights_o I would like it to be a complex value, as the weights can be expressed as an amplitude and a phase. In fact I would like to be able to restrict the output for example to only phase or only amplitude weights, but I have no clue on how to tackle this optimization. Could anyone provide some hints?
Thanks!
% We start with a desired 2D pattern, Beam_d, which is specific to a set of azimuth and elevation angles.
% %We then build a cost function to minimize the distance between the desired pattern, Beam_d, and the pattern generated from the weighting vector, weights_o.
% Our initial conditions for the optimization are based on uniform weighting. This pattern is included in the objective function shown in the code below.
%% Set up optimization
objfun = @(w)norm(w'*stvmat-Beam_d); % Define objective function used in fmincon
% Goal is to minimize the norms between
% the desired pattern and
% resulting pattern
weights_i = ones(N,1); % Initial setting for array amplitudes
% Serves as starting point to
% optimization
weights_o = fmincon(objfun,weights_i,[],[],[],[],zeros(N,1),ones(N,1));
% fmincon takes in the objfun,
% the initial weights, and
% upper and lower bounds of the weights
% In this example,
% 0 <= weights_o <= 1
% weights_o holds the weights
% which can be used to create
% a beam that matches our
% desired pattern

Answers (1)

Alan Weiss
Alan Weiss on 12 Mar 2021
fmincon requires real values only. Convert your complex-valued problem to twice as many real variables. For an example, see Fit a Model to Complex-Valued Data, especially the section Alternative: Split Real and Imaginary Parts.
Alan Weiss
MATLAB mathematical toolbox documentation
  5 Comments
Alan Weiss
Alan Weiss on 14 Mar 2021
I still don't understand your problem. The center part of the pictured black line is not entirely above the green line; some parts go below. Is that OK? The black curve does not go exactly through the two points that are the intersection of the green and red lines. If I understand you, the black curve must exactly intersect these points.
But maybe what you mean to say is that the center point of the black line must be above the green line, and some selected parts of the black line must be below the red line.
Once you have defined your constraints precisely, you can easily include them in your nonlinear constraint function.
There is an optimization example here that uses the surrogateopt solver to help design an antenna. Perhaps some of that example can help you with your problem.
Alan Weiss
MATLAB mathematical toolbox documentation
Albert
Albert on 14 Mar 2021
Hi,
My mistake because I quickly drew the lines. As you say all the x-axis points of the black curve should have been above the green line indeed! These are my two conditions, but I have no idea which is the best optimization tool for that. As I mentioned before the weights that give the black curve can be complex.
thanks

Sign in to comment.

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!