Hello guys, I need help.
Afficher commentaires plus anciens
I need to evaluate the function in each combination of (x1, x2, x3), that is:
for i=1:11
for j=1:11
for k=1:11
z(i,j,k)=feval(f,x1(i),x2(j),x3(k));
end
end
end
This evaluation gives us an NxNxN matrix (cell?). I don't know what it's called hahahaha
[sfx, ind]=sort(z(:));
we selected the t smallest function values
sfx=sfx(1:t);
And the indexes corresponding to the t smallest function values
ind=ind(1:t);
Does anyone have any idea how I can return the values of x1, x2 and x3 corresponding to these t smallest function values?
4 commentaires
Everton Silva
le 27 Mar 2020
Guillaume
le 27 Mar 2020
Notes:
z(i,j,k)=feval(f,x1(i),x2(j),x3(k));
can be written more simply as
z(i,j,k)=f(x1(i),x2(j),x3(k));
assuming that f is a function handle.
Also, depending on f you may not need the loops at all.
Steven Lord
le 27 Mar 2020
To compute the smallest values you can use the mink function.
Réponse acceptée
Plus de réponses (1)
[X1,X2,X3]=ndgrid(x1,x2,x3);
Z=f(X1,X2,X3); %assumes f is vectorized
M=[X1,X2,X3,Z];
[~,idx]=sort(M(:,4));
sortedM=M(idx,:);
X1s=sortedM(1:s,1);
X2s=sortedM(1:s,2);
X3s=sortedM(1:s,3);
Catégories
En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!