2012-10-16 111 views
0

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

ezplot3,这样做,但它只需要一个参数't'。我对matlab非常陌生,并且尽我所能快速学习它,但我无法找到关于此的很多信息。任何帮助,将不胜感激

回答

0

请记住,与matlab,你从来没有真正绘制“功能”;你正在绘制数组/矢量。因此,不是试图绘制g = f(X,Y),而是实际绘制向量X,Y和g,其中X和Y是原始输入,而g是包含输出的向量。

我有一个很难可视化你想要绘制但基本上,你可以按照任何标准的MATLAB绘图例子正是如:http://web.cecs.pdx.edu/~gerry/MATLAB/plotting/plotting.html

+0

好,是的,我知道,我一直在寻找类似的东西ezplot,在那里我给他们我的功能,它会自动采样和打印它...我想要的就像是一个等高线图或任何3d图,我可以在这两个参数x和y上看到函数的变化 – Nicomoto

0

它不会产生一个三维图,但我已经找到了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))')