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
Kshitij Singh answered .
2025-11-20
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...