1

我尝试绘制一个看起来像这样的球体。

这个较早的问题包含我尝试绘制的代码。

先前的问题已得到解答,但现在我无法绘制球体函数,如上面链接给出的图中所示。

编辑 这是我正在使用的球体功能:

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

end

编辑 结果应如下所示: 在此处输入图像描述

注意:我已将函数从 sphere 更改为 sphereFN 以避免与 matlab sphere 冲突。

4

2 回答 2

1

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

苏打水

但是,您的实现为:

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-loops 放入一个名为sum_of_different_powers_2D(例如)的函数中并调用它,传递 vector x

编辑

通过将嵌套循环内的命令替换为for

s(I,J) = abs(x(I))^2 + abs(x(J))^2;  

这将类似于此函数:

领域

编辑 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
于 2013-05-28T20:20:26.433 回答
0

Matlab 有一个内置的 sphere 函数,文档显示了如何绘制它。

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

于 2013-05-28T19:34:04.573 回答