#matlab #matlab-figure
#matlab #matlab-рисунок
Вопрос:
Мне нужно построить график x = cos(u) * cos (v), y = cos (v) * sin(u), z = -sin(v), где u, v оба из (0, pi). Я посмотрел на fplot3
функцию, но она принимает только один параметр. Может ли кто-нибудь указать на какую-либо функцию или есть какой-то другой способ, например, написать сценарий для построения графика?
Ответ №1:
Вы можете использовать fsurf
для параметрических графиков поверхности. fsurf
принимает два входных сигнала, u
, и v
.
% your functions
f_x = @(u,v) cos(u).*cos(v);
f_y = @(u,v) cos(v).*sin(u);
f_z = @(u,v) -sin(v);
% plot
umin = 0;
umax = pi;
vmin = 0;
vmax = pi;
figure(1); clf;
fsurf(f_x,f_y,f_z, [umin umax vmin vmax])
Вы также можете проверить fcontour
и fmesh
.
Комментарии:
1. О, я даже не знал об
fsurf
этом. Более чистое решение, как я предложил. 1!
Ответ №2:
Я бы использовал meshgrid
для этого:
u = linspace(0,pi,51);
v = linspace(0,pi,51);
[U,V] = meshgrid(u,v);
X = cos(U).*cos(V);
Y = sin(U).*cos(V);
Z = -sin(V);
Затем вы можете отобразить ее в виде сетки (используя mesh(X,Y,Z)
) или в виде набора линий (например, показанных здесь через plot3(X',Y',Z')
), как вам нравится: