Optimization problem with complex number in patternsearch command

조회 수: 3 (최근 30일)
Seyoung Jung
Seyoung Jung 2021년 4월 24일
댓글: Seyoung Jung 2021년 4월 26일
clc; clear;
%% Model
% Prameters
N = 64; % #of antenna element
angle = -pi/2:0.005:pi/2; % Define angle within visible region (rad)
degree=angle.*180./pi; % rad -> degree
u=sin(angle); % Define u space
% Arrayfactor without weights (d=0.5lambda)
n=(1:N)';
steeringangle=60;
us=0;
% us=sind(steeringangle);
arrayfactor=exp(-i*(-(N+1)/2+n)*pi*u); % For objfun
% Desired pattern for beam1
Beam_left=-pi/4;
Beam_right=pi/4;
for num = 1:size(angle,2)
if ( (angle(num) >= Beam_left) & (angle(num) <= Beam_right) )
Beam_d(num)=1;
else Beam_d(num)=0;
end
end
%% Optimization for beam
p=4;
objfun = @(w)(2/length(u)*sum(abs(abs(w'*arrayfactor)-Beam_d).^p)).^(1/p); % Objective functin
weights_i = [ones(N,1),i*ones(N,1)]; % Initial setting for w
weights_o = patternsearch(objfun,weights_i,[],[],[],[],[],[ones(N,1),ones(N,1)]);
Hello,
I am trying to write code to synthesis antenna array with optimization command.
However, I could not get complex optimization values.
And can I give constraint like 'abs[weights_i(complex number)] <= 1' as a upper bound?
Thank you so much.

채택된 답변

Alan Weiss
Alan Weiss 2021년 4월 25일
Global Optimization Toolbox solvers such as patternsearch require real numbers only as control variables. It is fine to calculate with complex values in the objective and nonlinear constraint functions; however, the results of such calculations must be real-valued. So it is fine that your arrayfactor is complex, as long as your results are purely real.
If you want to work with complex outputs, rewrite your functions to have twice as many real outputs, one representing the real part, one representing the complex part. For an example, see Split Real and Imaginary Parts.
For a Global Optimization Toolbox example of an antenna design problem, see Surrogate Optimization of Six-Element Yagi-Uda Antenna.
Alan Weiss
MATLAB mathematical toolbox documentation

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Antenna and Array Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by