如何绘制球体函数?

时间:2013-05-28 19:25:24

标签: matlab plot

我尝试绘制一个球体to look like this

This earlier question包含我尝试绘图的代码。

上一个问题已得到解答,但现在我无法绘制球体功能,如上面链接给出的图所示。

修改 这是我正在使用的球体功能:

function ph = sphereFN(x)
    ph = sum(x.*x, 2);

end

修改 结果应该是这样的: enter image description here

注意:我已经将函数从sphere更改为sphereFN,以避免与matlab球体发生冲突。

2 个答案:

答案 0 :(得分:1)

您的sphereFN可能没有做您期望的事情。看起来您正在尝试基于此功能实施sum of different powers测试:

sodp

但是,您的实现为:

ph = sum(x.*x, 2);  

与该功能不相似。如何以此为出发点:

x = linspace(-1,1,25);

for I=1:size(x,2)
    for J=1:size(x,2)
        s(I,J) = abs(x(I))^2 + abs(x(J))^3;
    end
end

[xx,yy] = meshgrid(linspace(-1,1,25));  

surfc(xx,yy,s)

由于您实质上描述的是2D问题,因此该函数的粗略实现就足够了。您可以将嵌套的for - 循环放入名为sum_of_different_powers_2D的函数中(例如)并调用它,传递向量x

修改

通过将嵌套for - 循环中的命令替换为:

,您可能会得到一个看起来更像您想要的表面的形状
s(I,J) = abs(x(I))^2 + abs(x(J))^2;  

这将类似于此功能:

sphere

修改2

重要的是要理解上面引用的等式中的n是问题的维度。正如您所示,这是2

编辑3

我建议你使用这个功能:

function ph = sphereFN(x)

for I=1:size(x,2)
    for J=1:size(x,2)
        ph(I,J) = abs(x(I))^2 + abs(x(J))^2;
    end
end

end

答案 1 :(得分:0)

Matlab有一个内置的球体功能,文档显示了如何绘制它。

http://www.mathworks.com/help/matlab/ref/sphere.html