在matlab中绘制2参数函数的结果(3D Graph)

时间:2012-10-16 23:57:31

标签: matlab matlab-figure

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

ezplot3,这样做,但它只需要一个参数't'。我是matlab的新手,我正在尽我所能快速学习它,但我对此无能为力。任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

嗯,这就是我的目标:http://www.mathworks.com/help/matlab/ref/ezsurf.html

如果我这样做

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

我得到了我想要的3D图形。

非常感谢!

答案 2 :(得分:0)

它没有产生3D图,但我发现2D散点图对此类任务有用:

scatter(x, y, 5, z)

z的位置(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))')