如何在MATLAB中绘制二维函数

w6lpcovy  于 2022-12-13  发布在  Matlab
关注(0)|答案(2)|浏览(202)

我正试图在MATLAB中绘制一个简单的方程。
公式为

z = x^2 - y^2, for -3 <= x <= 3, -3 <= y <= 3.

我目前拥有的代码是

x = -3:3;
y = -3:3;
z = (x.^2) - (y.^2);
plot(z)

结果是

请帮助我在这种情况下,因为我不确定是否代码和图形是正确的。非常感谢。

3qpi33ja

3qpi33ja1#

这不是分段函数。Piecewise Function是由多个子函数定义的函数,其中每个子函数应用于定义域中的不同区间。这里只有一个函数采用两个相同长度的数组。由于输入数组的原因,计算得到一个零向量。如果更改其中一个向量,即“x”或“y”,您将看到一个非零图。您的代码按预期工作。

vuktfyat

vuktfyat2#

这里有很多地方出了问题:让我们从头说起:

x = -3:3;
y = -3:3;

如果我们计算它们,它们都将返回一个整数向量:

x =

-3  -2  -1   0   1   2   3

这意味着函数计算的网格将非常粗糙。为了减轻这种情况,您可以定义步长,例如x = 3:0.1:3或使用linspace,在这种情况下,您可以设置样本数,例如x = linspace(-3, 3, 500)。现在考虑下一行:

z = (x.^2) - (y.^2);

如果我们评估这个,我们得到

z =
0   0   0   0   0   0   0

然后你用二维绘图功能来绘制这个矢量

plot(z)

这完美地解释了为什么你会得到一条直线。这是因为像减号这样的算术运算符的自动广播(-)只对输入值进行减法运算。但是,您需要对每一对xy的值计算z。要完成此操作并在稍后得到一个漂亮的绘图,您应该使用meshgrid,并使用mesh之类的绘图函数来绘制它。

[X,Y] = meshgrid(x,y);

创建网格,然后按如下方式在网格上计算函数

Z = X.^2 - Y.^2;

最后绘制函数

mesh(X,Y,Z);

相关问题