29 views (last 30 days)

Show older comments

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

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

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

Start Hunting!