Ackley Function 3D plot

34 views (last 30 days)
bhargav mehar on 14 Apr 2021 at 19:52
Commented: bhargav mehar on 14 Apr 2021 at 20:15
Ackley function has the formula of
I have been trying to plot the same but the function is not running. Please help me to understand how to plot. Thanks in advance
function [out]=ackley(in)
x=in;
e=exp(1);
out = (20 + e-20*exp(-0.2*sqrt((1/2).*sum(x.^2,2)))-exp((1/2).*sum(cos(2*pi*x),2)));
return
x = -3:3;
y = -3:3;
[X,Y] = meshgrid(x,y);
in = [X(:), Y(:)];
out = ackley(in);
Z = reshape(out, size(X));
surf(X, Y, Z);

Chad Greene on 14 Apr 2021 at 20:06
It looks like the code stops at the line that says return. Try putting the function at the bottom of the script and ending it with the word end. Like this:
(Below I have increased the spatial resolution by doing x and y steps of 0.01. I've also turned on the lighting to make it look more 3D.)
x = -3:.01:3;
y = -3:.01:3;
[X,Y] = meshgrid(x,y);
in = [X(:), Y(:)];
out = ackley(in);
Z = reshape(out, size(X));
surf(X, Y, Z);
camlight
material dull
function [out]=ackley(in)
x=in;
e=exp(1);
out = (20 + e-20*exp(-0.2*sqrt((1/2).*sum(x.^2,2)))-exp((1/2).*sum(cos(2*pi*x),2)));
end
bhargav mehar on 14 Apr 2021 at 20:15
Thank you so much!! It worked like a charm. :)