Ackley Function 3D plot

24 views (last 30 days)
bhargav mehar
bhargav mehar on 14 Apr 2021
Commented: bhargav mehar on 14 Apr 2021
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);

Accepted Answer

Chad Greene
Chad Greene on 14 Apr 2021
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);
shading interp
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
  1 Comment
bhargav mehar
bhargav mehar on 14 Apr 2021
Thank you so much!! It worked like a charm. :)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!