如何在matlab中使用surf绘制球体函数

时间:2016-09-06 02:48:43

标签: matlab function plot

我试图在下面绘制球体函数,但我得错了结果

enter image description here

enter image description here

以下是我使用

的代码
x1 = [-10:1:10];
x2 = [-10:1:10];
y = zeros(1,21);

for i = 1:21
    y(i) = sphere([x1(i) x2(i)]);
end
Y = meshgrid(y);
surf(x1,x2,Y);
colormap hsv;

sphere.m

function [y] = sphere(x)
d = length(x);
sum = 0;
for i = 1:d
    sum = sum + x(i)^2;
end
y = sum;
end

2 个答案:

答案 0 :(得分:0)

sphere(10)

这是一个内置功能的MatLab。

请负责任地享受。

如果您需要查看源代码,请在球体功能不在路径上时使用:edit spherehelp sphere

答案 1 :(得分:0)

为了完整性,你的代码不起作用,因为你只是在[-10,10]中对某些x \的对(x,x)上的函数进行评估,所以你不会覆盖整个域。它适用于此:

x1 = meshgrid([-10:1:10]);
x2 = x1';

Y = x1.^2+x2.^2;

surf(x1,x2,Y)

或更快(因为出于计算时间原因,应始终避免不必要的循环):

Rect bounds = new Rect();
Paint textPaint = textView.getPaint();
textPaint.getTextBounds(text,0,text.length(),bounds);
int height = bounds.height();
int width = bounds.width();