How to find optimum complex weighting coefficients for antenna beam pattern optimisation? A purely optimisation problem
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Albert am 11 Mär. 2021
Kommentiert: Albert am 14 Mär. 2021
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?
% 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
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
Alan Weiss am 12 Mär. 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.
MATLAB mathematical toolbox documentation
Find more on Surrogate Optimization 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!