Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что вы оцениваете гауссиану в диапазоне от 1 до 20 как для i
, так и j
. Поскольку sigma
равно 1, вы увидите только сегмент одной стороны гауссианы (не считая центра в [i,j] = [0,0]
), а значения z
от 3 до 20 в каждом направлении очень близки к 0.
Вместо использования для циклов, вы можете делать вещи «путем MATLAB», создавая матрицы значений x
и y
, используя функцию MESHGRID и выполняя поэлементные операции на них для вычисления и построения z
:
[x,y] = meshgrid(-4:0.1:4); %# Use values from -4 to 4 in x and y directions
z = (1/(2*pi*sigma^2)).*exp(-(x.^2+y.^2)./(2*sigma^2)); %# Compute z
surf(x,y,z); %# Plot z