2010-05-07 120 views
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) 

回答

1

你很可能遇到的问题是,你正在评估超过1的范围内高斯至20两个ij。由于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