如何在matlab中绘制特定函数

时间:2012-12-16 10:51:41

标签: matlab plot

我有这个功能:

enter image description here 我想绘制它,我认为结果是一个周期函数......

我尝试了这一点,但只得到了一点:(

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)));

我的问题在哪里?正确的方法是什么? 感谢任何帮助。

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)

注意两件事:

  1. 你忘记了分母中的“+1”。
  2. 我缩小了x1和x2坐标的范围,以便更好地进行可视化。
  3. 如果黑色边缘看起来很烦人并且似乎使绘图混乱,您可以通过禁用EdgeColor属性来移除边线(如Shai用户指出的那样):

    surf(X1, X2, F, 'EdgeColor', 'None')
    

    最终结果应如下所示:

    enter image description here

答案 1 :(得分:2)

  1. 这是一个3d图,因为有两个输入x1x2。所以你必须使用plot3(或surf作为@EitanT指出,或任何3d绘图功能。)

  2. 您现在只绘制对(-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);
    
  3. 您现在使用矩阵运算,通读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);