How to plot rastrigin function in matlab

G
Gracesmith97 · Mar 4, 2020 · 2K views
Question
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
Expert Answer
Profile picture of Kshitij Singh
Kshitij Singh PhD Expert
Answered Aug 20, 2026

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...

Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!