¿Por qué el resultado es incorrecto después de llamar a la función en matlab? Por favor, ayúdenme~~Gracias~~
Si se utiliza una variable global en una función, primero debe definirse como una variable global en la ventana de comandos, por lo que debe ingresarla en la ventana de comandos de esta manera
. global v w p n;
Global v w p n;
p>
x=;p=;n=4;
Por lo tanto, es mejor no utilizar variables globales en funciones Se puede escribir de la siguiente forma:
función f=fval(k,x,v,w,p,n)
if nargin==2.
v=50;w=;p=;n=4;
fin;
si nargin==3
w =;p=;n=4;
fin;
si nargin==4
p=;n=4;
fin;
si nargin==5
n=4;
fin
temp1=0;
temp2=0;
para h=1: n
p>
temp1=temp1 w(h)*x(h,k);
temp2=temp2 p(h)*x(h,k);
fin
temp1=temp1-v;
max=0 ;
if (0lt;temp1)
max=temp1;
p>
else
max=0; /p>
end
f=temp2-k*100*max;
Entonces, al llamar, puedes directamente x=[1 0 1; 0 0]; fval (1,x).