1
我想在MATLAB中绘制下面的高斯函数(应绘制三维图),但是我在某处出现了一些错误。哪里不对?在MATLAB中评估和绘制函数
sigma = 1
for i = 1:20
for j = 1:20
z(i,j) = (1/(2*pi*sigma^2))*exp(-(i^2+j^2)/(2*sigma^2));
end
end
surf(z)
我想在MATLAB中绘制下面的高斯函数(应绘制三维图),但是我在某处出现了一些错误。哪里不对?在MATLAB中评估和绘制函数
sigma = 1
for i = 1:20
for j = 1:20
z(i,j) = (1/(2*pi*sigma^2))*exp(-(i^2+j^2)/(2*sigma^2));
end
end
surf(z)
你很可能遇到的问题是,你正在评估超过1的范围内高斯至20两个i
和j
。由于sigma
是1,则只是要看到高斯(不包括在[i,j] = [0,0]
中心)的一侧的一段,和z
从3至20在每个方向上的值非常接近0
而不是使用for循环,你可以做的事情“的MATLAB方式”使用功能MESHGRID创造x
矩阵和y
值,并执行对他们element-wise operations计算和绘制的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