How to find optimum complex weighting coefficients for antenna beam pattern optimisation? A purely optimisation problem
6 ビュー (過去 30 日間)
古いコメントを表示
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
0 件のコメント
回答 (1 件)
Alan Weiss
2021 年 3 月 12 日
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 件のコメント
Alan Weiss
2021 年 3 月 14 日
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
参考
カテゴリ
Help Center および File Exchange で Surrogate Optimization についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!