基本上,我有一个函数 f(X,Y) 将为我给出的每个 X,Y 返回一个值。matlab中是否有任何函数可以传递函数f,X,Y的范围,以便绘制一个3d图,显示给定范围内所有值的f(沿z轴)的大小。
ezplot3,做这种,但它只需要一个参数't'。我对 matlab 很陌生,正在尽我所能快速学习它,但我找不到太多关于这个的东西。任何帮助,将不胜感激
基本上,我有一个函数 f(X,Y) 将为我给出的每个 X,Y 返回一个值。matlab中是否有任何函数可以传递函数f,X,Y的范围,以便绘制一个3d图,显示给定范围内所有值的f(沿z轴)的大小。
ezplot3,做这种,但它只需要一个参数't'。我对 matlab 很陌生,正在尽我所能快速学习它,但我找不到太多关于这个的东西。任何帮助,将不胜感激
好吧,这就是我想要的: http: //www.mathworks.com/help/matlab/ref/ezsurf.html
如果我这样做
ezsurf('f(x,y)');
我得到了我想要的 3d 图。
不管怎么说,多谢拉!
请记住,使用 matlab,您永远不会真正绘制“函数”;您正在绘制数组/向量。因此,您实际上将通过绘制向量 X、Y 和 g,而不是尝试绘制 g = f(X,Y),其中 X 和 Y 是您的原始输入,而 g 是包含您的输出的向量。
我很难想象你到底想画什么,但基本上,你可以遵循任何标准的 matlab 绘图示例,例如:http ://web.cecs.pdx.edu/~gerry/MATLAB/plotting/plotting .html
它不会生成 3D 图,但我之前发现 2D 散点图对此类任务很有用:
scatter(x, y, 5, z)
Where z
is the value of the function at point(x, y)
会产生类似于你想要的东西。它可能不如完整的 3D 情节那么漂亮,但可以用来产生良好的效果。
看:
这是我整理的一些(非常丑陋的)代码来展示差异:
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))')