How to plot rastrigin function in matlab
20 次查看(过去 30 天)
显示 更早的评论
I'm trying to plot rastrigin function this way
clear; clc; close all;
limits = repmat([-5 5], 2, 1);
[X,Y] = meshgrid(linspace(limits(1,1),limits(1,2),100),...
linspace(limits(2,1),limits(2,2),100));
Z = reshape(rastrigin([X(:)'; Y(:)']), 100, 100);
surf(X,Y,Z);
axis([-5 5 -5 5 0 90]);
shading interp
rastrigin.m
function [y] = rastrigin(x)
d = length(x);
sq = x.^2;
y = 10*d + sum(sq - 10*cos(2*pi*x));
end
But I'm getting empty figure
1 个评论
Mahmoud ABURUB
2020-2-22
编辑:Mahmoud ABURUB
2020-2-22
Rastrigin's Function has only one global minima at point [0,0]
the coden for ploting the function in 3D (X,Y,Z) is:
function [y]=rastringis(x1,x2)
dx1=length(x1);
dx2=length(x2);
for i=1:dx1
for j=1:dx2
y(i,j)=(20+x1(i).^2+x2(j).^2)-10*(cos(2*pi*x1(i))+cos(2*pi*x2(j)));
end
end
end
x1=[-5:0.1:5];
x2=[-5:0.1:5];
y=rastringis(x1,x2)
meshc(x1,x2,y);
the figure is attached to this message.
采纳的回答
dpb
2016-11-13
Your scaling seems to be out of whack--adding 10+length(x) is creating a Z of
>> [min(Z(:)) max(Z(:))]
ans =
1.0e+03 *
0.9810 1.0604
>>
Hence your axis command puts the Z axis range quite a long distance below where the data values are.
It appears from the functional definition, the offset factor you're looking for would be 20; 2X the scale factor of the cosine term. If I do that and then
zlim([0 90])
get an interesting figure, indeed. Hadn't heard of the rastrigin function...
2 个评论
dpb
2016-11-13
Did you look at min/max of your Z array???? Apparently not...
Try removing the axis command entirely and see what happens. The combination of those should result in enlightenment.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Formatting and Annotation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!