我尝试绘制一个球体to look like this。
This earlier question包含我尝试绘图的代码。
上一个问题已得到解答,但现在我无法绘制球体功能,如上面链接给出的图所示。
修改 这是我正在使用的球体功能:
function ph = sphereFN(x)
ph = sum(x.*x, 2);
end
修改 结果应该是这样的:
注意:我已经将函数从sphere更改为sphereFN,以避免与matlab球体发生冲突。
答案 0 :(得分: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
- 循环放入名为sum_of_different_powers_2D
的函数中(例如)并调用它,传递向量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
答案 1 :(得分:0)
Matlab有一个内置的球体功能,文档显示了如何绘制它。