在MATLAB中评估和绘制函数

时间:2010-05-07 03:31:55

标签: graphics matlab

我试图在MATLAB中绘制以下高斯函数(应该在3维中绘图),但我在某处犯了一些错误。有什么问题?

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 个答案:

答案 0 :(得分:1)

您可能遇到的问题是,您正在评估ij的1到20范围内的高斯分布。由于sigma为1,您只会看到高斯一侧的一段(不包括[i,j] = [0,0]处的中心),以及z的值在3到20之间每个方向都非常接近0。

您可以使用函数MESHGRID创建xy值的矩阵并执行element-wise operations,而不是使用for循环,而是通过“MATLAB方式”执行操作他们计算和绘制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