如何用八度或matlab中的两个变量绘制函数?

Zac*_*ach 7 matlab plot octave

我想使用八度音程来绘制相当简单的函数,其中包含两个变量:f(x,y)= x ^ 2 + 3y.绘制单变量函数非常容易,但我在查找如何执行两个变量函数时遇到了很多麻烦.有谁知道这样做的最佳方式?

ess*_*kov 9

绘制两个变量的函数通常意味着三维图 - 在MATLAB中,您将使用函数plot3.要在X和Y的区间[-10,10]中绘制函数f(x,y),可以使用以下命令:

x = [-10:.1:10];
y = [-10:.1:10];
plot3(x, y, x.^2 + 3*y)
grid on
Run Code Online (Sandbox Code Playgroud)


Ton*_*oni 7

如果它可以帮助那里的人......我在接受的答案中运行了八度代码,我得到了这个情节:

在此处输入图片说明

但我真的想要 x 和 y 的笛卡尔积中的每个点的函数,而不仅仅是沿着对角线,所以我使用函数网格来获得这个 3D 图,其中投影轮廓线位于 x,y 平面:

x = [-10:.1:10];
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;
mesh(x, y, z)
meshc(xx,yy,z) 
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
grid on
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

为了摆脱情节的网状线纹理,功能surf做到了这一点:

x = [-10:.1:10];    
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;
h = surf(xx,yy,z);
colormap hsv;
set(h,'linestyle','none');
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

另一种绘制方法是作为带有等高线的热图

x = [-10:.1:10];
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + yy.*3;
contourf(xx,yy,z);
colormap hsv;
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
grid on
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

为了完整起见,可以标记级别:

x = [-10:.1:10];
y = [-10:.1:10];
[xx, yy] = meshgrid (x, y);
z = xx.^2 + 3*yy;
[C,h] = contour(xx,yy,z);
clabel(C,h)
xlabel ("x");
ylabel ("y");
zlabel ("f(x,y)");
title ("f(x,y) = x^2 + 3y");
grid on
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明