построить набор трехмерных данных под разными углами в MATLAB - PullRequest
1 голос
/ 17 июля 2011

У меня есть формула, которая зависит от тета и фи (сферические координаты 0 <= тета <= 2 * пи и 0 <= фи <= пи). Вставив каждый engle, я получил количество. Теперь у меня есть набор данных для разных углов, и мне нужно построить поверхность. Мои данные представляют собой матрицу 180 * 360, поэтому я не уверен, что смогу использовать SURF, MESH или PLOT3. Фигура должна представлять собой поверхность, которая включает все данные, а оси должны быть с точки зрения количества, а не количества в зависимости от углов. Как я могу построить такую ​​поверхность? </p>

Ответы [ 2 ]

0 голосов
/ 17 июля 2011

Если я вас правильно понял, вы вычислили функцию f(theta,phi), и теперь вы хотите построить поверхность, содержащую все точки с полярной координатой (r,theta,phi), где r=f(theta,phi).

Если это то, что вы хотите сделать, 2D-версия такого графика включается в MATLAB под именем polar.К сожалению, как вы указали, polar3 на MatlabCentral - это не обобщение, которое вы ищете.

Мне удалось построить сферу с помощью следующего кода, используя константу r=1.Вы можете попробовать это с вашей функцией:

phi1=0:1/(3*pi):pi; %# this would be your 180 points
theta1=-pi:1/(3*pi):pi; % your 360 points
r=ones(numel(theta1),numel(phi1));
[phi,theta]=meshgrid(phi1,theta1);
x=r.*sin(theta).*cos(phi);
y=r.*sin(theta).*sin(phi);
z=r.*cos(theta);
tri=delaunay(x(:),y(:),z(:));
trisurf(tri,x,y,z);

Из моих тестов кажется, что delaunay также включает в себя много треугольников, которые проходят через объем моей сферы, так что кажется, что это не оптимально,Поэтому, возможно, вы можете взглянуть на fill3 и построить нарисованные им треугольники: в первом приближении вы можете объединить точки [x(n,m) x(n+1,m) x(n,m+1)] в один треугольник и [x(n+1,m) x(n+1,m+1) x(n+1,m+1)] в другой...

0 голосов
/ 17 июля 2011

Я не вижу причин, по которым вы не можете использовать mesh или surf для построения таких данных. Другой вариант, который я использую, это выбор графиков плотности. Вы в основном отображаете зависимую переменную (количество) в виде изображения и включаете независимые переменные (углы) вдоль оси, так же, как и в случае с вышеупомянутыми функциями трехмерного построения. Это можно сделать с помощью imagesc.

Обычно вы хотите, чтобы ваши оси были зависимыми переменными. Не могли бы вы подробнее рассказать об этом?

...