0

基本上,我有一个函数 f(X,Y) 将为我给出的每个 X,Y 返回一个值。matlab中是否有任何函数可以传递函数f,X,Y的范围,以便绘制一个3d图,显示给定范围内所有值的f(沿z轴)的大小。

ezplot3,做这种,但它只需要一个参数't'。我对 matlab 很陌生,正在尽我所能快速学习它,但我找不到太多关于这个的东西。任何帮助,将不胜感激

4

3 回答 3

0

好吧,这就是我想要的: http: //www.mathworks.com/help/matlab/ref/ezsurf.html

如果我这样做

ezsurf('f(x,y)');

我得到了我想要的 3d 图。

不管怎么说,多谢拉!

于 2012-10-17T03:35:22.270 回答
0

请记住,使用 matlab,您永远不会真正绘制“函数”;您正在绘制数组/向量。因此,您实际上将通过绘制向量 X、Y 和 g,而不是尝试绘制 g = f(X,Y),其中 X 和 Y 是您的原始输入,而 g 是包含您的输出的向量。

我很难想象你到底想画什么,但基本上,你可以遵循任何标准的 matlab 绘图示例,例如:http ://web.cecs.pdx.edu/~gerry/MATLAB/plotting/plotting .html

于 2012-10-17T00:21:27.560 回答
0

它不会生成 3D 图,但我之前发现 2D 散点图对此类任务很有用:

scatter(x, y, 5, z)

Where zis the value of the function at point(x, y)会产生类似于你想要的东西。它可能不如完整的 3D 情节那么漂亮,但可以用来产生良好的效果。

看:

http://www.mathworks.com/matlabcentral/fileexchange/35287-matlab-plot-gallery-scatter-plot-2d/content/html/Scatter_Plot_2D.html

这是我整理的一些(非常丑陋的)代码来展示差异:

j=1;
y = -100:1:100;
for i = -100:1:100
    y = [y -100:1:100];
    count = 0;
    while count < 202;
        x(j) = i;
        j = j+1;
        count = count + 1;
    end
end

z = (abs(x) + abs(y));

figure(1)
scatter(x, y, 10, z)
h=colorbar;

figure(2)
ezsurf('(abs(x) + abs(y))')
于 2012-10-18T14:20:12.720 回答