特定的功能我有这样的功能:如何绘制在Matlab
,我想绘制它,我想结果是一个周期函数...
我试过,但只拿到一个点:(
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)));
这里是我的问题,什么是正确的方法是什么?
得到任何帮助。
特定的功能我有这样的功能:如何绘制在Matlab
,我想绘制它,我想结果是一个周期函数...
我试过,但只拿到一个点:(
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)));
这里是我的问题,什么是正确的方法是什么?
得到任何帮助。
这是一个3D图,因为有两个输入x1
和x2
。所以你必须使用plot3(或者@EitanT指出的surf,或任何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阅读,你会看到,你需要的elementwise操作:的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);
您需要将其绘制为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
属性中删除的边缘线(如用户夏嘉曦指出):
surf(X1, X2, F, 'EdgeColor', 'None')
最终的结果应该是这样的:
非常感谢 – zhilevan