Plotting a 3d gaussian function using surf
66 ビュー (過去 30 日間)
古いコメントを表示
Let me start off by saying that I am extremely new to MATLAB. I would to use these functions and turn them into a 3d plot using surf. I have already made a mesh grid of my x and y but I am confused on how to plug my gaussian function in as Z. I would like the surf plot to look like this http://i.stack.imgur.com/QiTPe.png
x=randn(1,10000);
y=x';
[X,Y]=meshgrid(x,y);
z=(1000/sqrt(2*pi)*exp(-X.^2/2))
surf(x,y,z);shading interp
Thanks in advance for the help.
1 件のコメント
採用された回答
Star Strider
2015 年 2 月 27 日
編集済み: Star Strider
2015 年 2 月 27 日
This works:
N = 3.0;
x=linspace(-N, N);
y=x;
[X,Y]=meshgrid(x,y);
z=(1000/sqrt(2*pi).*exp(-(X.^2/2)-(Y.^2/2)));
surf(X,Y,z);
shading interp
axis tight
Experiment to get the result you want.
5 件のコメント
Star Strider
2015 年 2 月 28 日
My pleasure.
You have to use a linear vector in x and y, as did I with linspace. I see no reason to use randn here, since it is by definition random and will create very strange matrices with meshgrid.
To experiment, do a simple surf plot of the meshgrid outputs using a randn vector and using linspace for x and y. Use different randn calls for x and y each in order to avoid the ‘banding’ you saw in the plot you posted.
If you want to use randn at all to look at the distribution of the points, consider using scatter3:
x = randn(1,10000);
y = randn(1,10000);
zf=@(X,Y) (1000/sqrt(2*pi).*exp(-(X.^2/2)-(Y.^2/2)));
z = zf(x,y);
figure(1)
scatter3(x, y, z, 'b.')
grid on
Rotate it in the GUI to get an interesting perspective on the density of the distribution.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Graphics Performance についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
