Hello guys, I need help.
Mostra commenti meno recenti
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 Commenti
Everton Silva
il 27 Mar 2020
Guillaume
il 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
il 27 Mar 2020
To compute the smallest values you can use the mink function.
Risposta accettata
Più risposte (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);
Categorie
Scopri di più su Startup and Shutdown in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!