我有这个功能:
我想绘制它,我认为结果是一个周期性函数......
我试过了,但只得到一分:(
x1=-50:0.1:50;
x2=-50:0.1:50;
plot(cos(sqrt(power(x1,2)+power(x2,2)))/(power(x1,2)+power(x2,2)));
我的问题在哪里,正确的方法是什么?
感谢任何帮助。
您需要将其绘制为 3-D 曲面。例如,使用surf
:
[X1, X2] = meshgrid(-5:0.25:5, -5:0.25:5);
F = cos(sqrt(X1 .^ 2 + X2 .^ 2)) ./ (X1 .^ 2 + X2 .^ 2 + 1);
surf(X1, X2, F)
注意两点:
如果黑色边缘看起来很烦人并且似乎使情节混乱,您可以通过禁用该EdgeColor
属性来删除边缘线(正如用户 Shai 指出的那样):
surf(X1, X2, F, 'EdgeColor', 'None')
最终结果应如下所示:
这是一个 3d 图,因为有两个输入x1
和x2
. 所以你必须使用plot3(或@EitanT 指出的冲浪,或任何 3d 绘图功能)。
您现在只绘制对(-50;-50)
, (-49.9;-49.9)
,..., (50;50)
,因为您从两个向量开始,您可能想要涵盖所有组合。因此,使用meshgrid(对于更高的维度,还有ndgrid):
x1=-50:0.1:50;
x2=-50:0.1:50;
[X1, X2] = meshgrid(x1,x2);
您现在使用矩阵运算,通读此链接,您会发现您需要逐元素运算:a.*b
代替a*b
, etc.power(a,b)
已经是逐元素运算(与 相同a.^b
),等效矩阵是mpower(a,b)
or a^b
。
f = cos(sqrt(power(X1,2)+power(X2,2)))./(power(X1,2)+power(X2,2)+1);
plot3(X1,X2,f);