как решить ошибку моей следующей проблемы? - PullRequest
0 голосов
/ 24 апреля 2020
function y= main(h_AB1_real,h_AB1_imag,h_AH1_real,h_AH1_imag,mu_B,mu_H)
objective = @(x) x;

% nonlinear constraints
nonlincon = @(x)nlcon(x,h_AB1_real,h_AB1_imag,h_AH1_real,h_AH1_imag,mu_B,mu_H);

% optimize with fmincon
y=fmincon(objective,[0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5],[],[],[],[],[0;0;0;0;0;0;0;0;0;0;0;0]+eps,[1;1;1;1;1;1;1;1;1;1;inf;1]-eps,nonlincon);

И

% create file nlcon.m for nonlinear constraints
function [c,ceq] = nlcon(x,h_AB1_real,h_AB1_imag,h_AH1_real,h_AH1_imag,mu_B,mu_H)
  c1=0.00001- (norm((h_AB1_real'*x(1:5))+(h_AB1_imag'*x(6:10))+1i*(-(h_AB1_imag'*x(1:5))+(h_AB1_real'*x(6:10)))).^2)*x(11);
  c2=0.00001- (norm((h_AH1_real'*x(1:5))+(h_AH1_imag'*x(6:10))+1i*(-(h_AH1_imag'*x(1:5))+(h_AH1_real'*x(6:10)))).^2)*x(11);
  c3=10 - x(12).*log2(1+mu_B.*(norm((h_AB1_real'*x(1:5))+(h_AB1_imag'*x(6:10))+1i*(-(h_AB1_imag'*x(1:5))+(h_AB1_real'*x(6:10)))).^2).*x(11));
  c4=10- (1-x(12)).*log2(1+(x(12).* mu_H.*(norm((h_AH1_real'*x(1:5))+(h_AH1_imag'*x(6:10))+1i*(-(h_AH1_imag'*x(1:5))+(h_AH1_real'*x(6:10)))).^2).*x(11))))./(1-x(12)));
  c = [c1;c2;c3,c4];
  %% Beamforming vectors
  c5=1-norm(x(1)+1i*x(6));
  c6=1-norm(x(2)+1i*x(7));
  c7=1-norm(x(3)+1i*x(8));
  c8=1-norm(x(4)+1i*x(9));
  c9=1-norm(x(5)+1i*x(10));
  ceq = [c5;c6;c7;c8;c9];

Здесь я рассматриваю h_AB1_real, h_AB1_imag, h_AH1_real, h_AH1_imag - 5 * 1 вектор. Я рассмотрел вектор состоит из 12 столбцов. Я хочу получить оптимизированное значение каждого элемента этого вектора. Наконец это показывает

Supplied objective function must return a scalar value.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...