我有这个功能:
我想绘制它,我认为结果是一个周期函数......
我尝试了这一点,但只得到了一点:(
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)));
我的问题在哪里?正确的方法是什么? 感谢任何帮助。
答案 0 :(得分:4)
您需要将其绘制为三维曲面。例如,使用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')
最终结果应如下所示:
答案 1 :(得分:2)
这是一个3d图,因为有两个输入x1
和x2
。所以你必须使用plot3(或surf作为@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);
您现在使用矩阵运算,通读this link,您将看到需要元素运算:a.*b
而不是a*b
等。power(a,b)
已经是元素操作(与a.^b
相同),矩阵等价物是mpower(a,b)
或a^b
。
f = cos(sqrt(power(X1,2)+power(X2,2)))./(power(X1,2)+power(X2,2)+1);
plot3(X1,X2,f);