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.