簡體   English   中英

如何在Matlab中使用Surf繪制球面函數

[英]How to use surf to plot sphere function in matlab

我正在嘗試在下面繪制球面函數,但結果卻是錯誤的

在此處輸入圖片說明

在此處輸入圖片說明

這是我正在使用的代碼

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

sphere(10)

它是MatLab內置函數。

請負責任地享受。

如果需要查看源代碼,請使用:當sphere函數不在路徑help sphere時, edit spherehelp sphere

為了完整起見,您的代碼無法正常工作,因為您只對[-10,10]中的一些\\ \\對(x,x)上的函數進行求值,因此不會涵蓋整個域。 它可以這樣工作:

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

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

或更快(因為出於計算時間的原因,您應始終避免不必要的循環):

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

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

surf(x1,x2,Y)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM